【发布时间】: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 毫秒,尽管现在查看它,这可能不是问题
-
你试过lift()方法了吗? Jk