好吧基本上我需要4个文本框,因为原因,无论如何,但是当我第一次运行我的代码时,文本框中的东西不允许我输入任何东西/选择它们。我认为这可能与我在启动时弹出一个提出是或否问题的弹出窗口的事实有关,但即使在我回答弹出问题之后文本框也没有得到关注...
from tkinter import *
from tkinter import messagebox
class GuiTesting:
def __init__(self, master):
self.master = master
master.title('Testing Window')
self.tLabel = Label(master, text='First TextBox')
self.tLabel.grid(row=0, column=0, columnspan=1)
self.text = Text(master, height=1)
self.text.grid(row=0, column=1, columnspan=2)
messagebox.askyesno('Would you like to continue on your last playlist')
self.greeter = Button(master, text='Add', command=self.greet)
self.greeter.grid(row=5, column=0, columnspan=2)
def greet(self):
print('you pressed a button')
# outside of class def
root = Tk()
gui = GuiTesting(root)
root.mainloop()
删除窗口是否与它有关?如果我在窗口外面点击并在文本框中返回将让我选择它,所以我想这是一个焦点的事情......?请帮忙!提前致谢!对不起,我忘了我在Pycharm做这个。希望代码现在更清晰。我测试了它并没有给文本框重点。
答案 0 :(得分:0)
你的问题写得很糟糕。在循环中立即在Tkinter中使用消息框时出现问题。校验: tkinter messagebox prevents Entry widget from working
你需要改变一些事情:
self.text = Entry(master)
添加方法:
def ask(self):
x = messagebox.askyesno('Would you like to continue on your last playlist')
print x #or whatever
self.text.focus()
不要立即调用消息框,而是使用:
root.after(1,self.ask)
编辑:
需要说明的是,root.after
应该代替
messagebox.askyesno('Would you like to continue on your last playlist')
并且必须定义新方法,除非您使用lambda。