gpt4 book ai didi

python - Tkinter 图形用户界面主循环 "ex ="

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:03 25 4
gpt4 key购买 nike

你好,我是 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 是什么意思,我简直找不到在线文档。

最佳答案

Pong 类是一个包装框架。它代表 GUI 应用程序,并封装(隐藏)Tkinter GUI 内容。

Frame 是显示内容的“窗口”。rootTk 主框架。 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 小部件。这也比直接从主函数设置小部件更安全。

同时检查这些:

http://effbot.org/tkinterbook/

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

关于python - Tkinter 图形用户界面主循环 "ex =",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com