【问题标题】:How do you focus a window after launching another application in tkinter?在 tkinter 中启动另一个应用程序后如何聚焦窗口?
【发布时间】:2021-06-15 11:47:42
【问题描述】:

在我的应用程序中,我有一个简单地打开文件的回调。问题是一旦 python 打开该文件,我的应用程序就会失去焦点。这种行为真的会减慢我的进程。这是我的问题的一个例子:

import os
from tkinter import *


class App(Frame):
    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)

        Button(self, text='Open File', bg=self['bg'],
               command=lambda: self.open_file('path_to_movie_or_PDF_or_anything_that_launches_application'),
               relief=GROOVE).pack(padx=10, pady=10)

        self.entry_field = Entry(self, bg=self['bg'], width=20)
        self.entry_field.pack(padx=10, pady=10)
        self.entry_field.focus()

    def open_file(self, some_path):
        os.startfile(some_path)
        self.handle_focus()

    def handle_focus(self):
        # ATTEMPT 1
        # self.master.after(1, lambda: self.master.focus_force())
        # self.entry_field.focus()

        # ATTEMPT 2
        # self.master.attributes("-topmost", True)
        # self.master.lift()
        # self.entry_field.focus()

        # ATTEMPT 3
        # self.master.focus_set()
        # self.entry_field.focus_set()

        # ATTEMPT 4
        # self.master.focus_force()
        # self.master.lift()
        # self.master.update()
        # self.entry_field.focus()

        pass


if __name__ == '__main__':
    root = Tk()
    root.config(bg='white')
    App(root, bg='white').pack()
    root.mainloop()

我正在尝试使用按钮打开文件,然后立即将焦点转到输入栏。如何实现?

我已经向Tkinter main window focus 寻求答案,但 focus_force() 并没有解决问题,尽管它的功能正是我所需要的。 focus_force() 的文档指出“即使应用程序没有焦点,也将输入焦点直接指向此小部件。谨慎使用!”由于某种原因,这不起作用。

【问题讨论】:

  • focus_force和grab_set怎么样
  • 尝试在您的第一次尝试中将延迟增加到可能 3 秒 (3000) 或超过 1 毫秒,尽管现在查看它,这可能不是问题
  • 看看thisthis
  • 我不认为这是可能的,阅读1你也试过this吗?
  • 你试过lift()方法了吗? Jk

标签: python tkinter


【解决方案1】:

正如你所说,你想将焦点放在输入字段上

inputfield.focus_set()

就是这样

【讨论】:

  • 这并不能解决问题。请参阅我使用该方法的第 3 次尝试。打开文件后,您仍然需要通过 Windows 管理器导航回应用程序。
猜你喜欢
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多