Tkinter GUI主循环“ ex =”

重新分配者

您好,我是python的一个完整的初学者,在tkinter中创建一个简单的gui时遇到了一个问题(试图制作简单的Pong)。无论如何,我在python 3中有这段代码:

    from tkinter import Frame
import tkinter

class Pong(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)   
        self.parent = parent
        self.parent.bind("<Key>", self.key)
        self.initialize()

    def key(self, event):
        if event.char == 'q':  #end
            self.quit()
        print("end")
    def initialize(self):
        print("initialize")
        pass

def main():

    root = tkinter.Tk()
    ex = Pong(root)
    root.overrideredirect(True)
    root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))
    root.mainloop()

main()

我想知道底部的“ ex = Pong(root)”部分到底做了什么,因为如果我删除程序不起作用,我无法按Q退出,但是我找不到ex的意思,我确实找不到在线文档。

rask004

类是包装帧。它表示GUI应用程序,并封装(隐藏)Tkinter GUI内容。

是在被示出的“窗口”的内容。Tk的主框架。root是基本窗口-破坏root破坏(关闭)GUI。

考虑到这一点,我建议尝试以下更改:

class Pong(Frame):

...

    def key(self, event):
        if event.char == 'q':  #end
            # close the base Frame, and our application Frame
            self.parent.quit()
            self.quit()

    # wrapper methods for root control
    def overrideredirect( bool ):
        self.parent.overrideredirect(bool)

    def geometry(geo_string):
        self.parent.geometry(geo_string)

    def mainloop():
        self.parent.mainloop()

...

def main():

    root = Tkinter.Tk()
    wdth, hght = root.winfo_screenwidth(), root.winfo_screenheight()
    ex = Pong(root)
    ex.overrideredirect(True)
    ex.geometry("{0}x{1}+0+0".format(wdth, hght))
    ex.mainloop()

然后,您可以使用Pong驱动主窗口。我以前使用过这种方法,却发现它更安全-我没有将root与我的Frame类混淆并造成了令人讨厌的事故!而且它比将Tk子类化更安全。

您也可以在pong中添加一个方法generate_gui(),并对其进行编码以设置您的GUI小部件。这比直接从main函数设置小部件更安全。

同时检查这些:

http://effbot.org/tkinterbook/

http://www.tkdocs.com/tutorial/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章