tkinter消息框可防止Entry小部件工作

时间:2015-01-29 14:20:10

标签: python python-3.x tkinter

我有一个程序,它有一个消息框来指示用户。但在关闭消息框后,我无法进入条目小部件。 有没有人知道可能是什么问题?

我的代码:

from tkinter import *
import random
import tkinter.messagebox

class Application(Frame):
    """ GUI aplication hoger of lager"""
    def __init__(self,master):
        """Instaleerd het Frame"""
        super(Application, self).__init__(master)
        self.grid()
        rarara=0;aantal=0;max_pogingen=10;ikdenkaan=random.randrange(1,100)
        self.main()

    def welkom(self):
        """Create Widgets voor het spelletje hoger of lager"""
        #Verwelkomingslebels en instructielabels
        msgb=tkinter.messagebox.showinfo("uitleg",
                                         "Welkom bij het spelletje'hoger of lager'.\nIk heb zojuist aan een getal tussen 1 en 100 gedacht.\nJij mag dat getal raden en je hebt 10 pogingen."
                                         )

    def labels(self):
        #ik denk aan label
        Label(self,
              text="Ik denk aan:"
              ).grid(row=0,column=0,sticky=W)


    def welkgetal(self):
        rarara=Entry(self)
        rarara.grid(row=0, column=1,sticky=W)
        rarara.configure(state="normal")


    def main(self):
        self.welkom()
        self.labels()
        self.welkgetal()

root=Tk()
root.title("Hoger of lager")
root.geometry("350x280+533+244")
app=Application(root)
root.mainloop()

1 个答案:

答案 0 :(得分:3)

似乎Tk模态窗口在事件处理方面表现得非常奇怪:

[0] Python tkinter: stopping event propagation in text widgets tags

[1] http://tiku.io/questions/3361808/python-tkinter-bind-breaking

修复:

class Application(Frame):
    """ GUI aplication hoger of lager"""
    def __init__(self,master):
        """Instaleerd het Frame"""
        super(Application, self).__init__(master)
        self.grid()
        rarara=0;aantal=0;max_pogingen=10;ikdenkaan=random.randrange(1,100)
        self.main()
        master.after(1, self.welkom)

    def main(self):
        self.labels()
        self.welkgetal()

我不知道为什么,但它确实有效。