您好,我是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的意思,我确实找不到在线文档。
该傍类是包装帧。它表示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函数设置小部件更安全。
同时检查这些:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句