Python tkinter文本不允许在启动时进入

时间:2016-10-22 02:26:39

标签: python tkinter

好吧基本上我需要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做这个。希望代码现在更清晰。我测试了它并没有给文本框重点。

1 个答案:

答案 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。