我用 python3、tkinter 编写了一个非常简单的应用程序,但我看到 Entry() 出现一些奇怪的行为。我是 tkinter 和 python 的新手。
import os
from tkinter import Tk, Entry, filedialog
class MyGUI:
def __init__(self,master):
self.master = master
self.date_entry = Entry(master)
self.date_entry.pack()
self.date_entry.insert(0,"test")
self.master.mainloop()
root = Tk()
root.directory = os.path.abspath(filedialog.askdirectory())
my_gui = MyGUI(root)
当我运行此代码时,倒数第二行导致了以下问题:
当我尝试编辑“测试”文本时,我无法选择它(没有光标或任何东西)。但是,如果我在应用程序之外(例如桌面)单击一次,我就可以对其进行编辑。
有谁知道是什么问题?
我想知道这是否与文件对话框创建的新应用程序窗口有关,但我找不到答案。
感谢您的回复!
在测试了这个奇怪的行为之后,似乎只要添加一个按钮来获取目录,问题就会消失。
然而我觉得很奇怪,我会看看是否能找到任何可以解释为什么 tkinter 这样做的东西。
这段代码应该适合你:
import tkinter as tk
from tkinter import filedialog
class MyGUI(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.date_entry = tk.Entry(self)
self.date_entry.pack()
self.date_entry.insert(0, "test")
self.directory = ""
tk.Button(self, text="Get Directory", command=self.get_directory).pack()
def get_directory(self):
self.directory = filedialog.askdirectory()
MyGUI().mainloop()
UPDATE:
我最近了解到添加update_idletasks()
在文件对话框修复焦点问题之前。
更新的代码:
import os
from tkinter import Tk, Entry, filedialog
class MyGUI:
def __init__(self,master):
self.master = master
self.date_entry = Entry(master)
self.date_entry.pack()
self.date_entry.insert(0,"test")
self.master.mainloop()
root = Tk()
root.update_idletasks() # fix focus issue.
root.directory = os.path.abspath(filedialog.askdirectory())
my_gui = MyGUI(root)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)