大家好!我首先为我缺乏编码知识而道歉,我目前正在尝试自己学习Python,并且很有趣。"我唯一的正规教育来自多年前的高中Java AP课程。
我目前在Windows 10操作系统上使用Python版本3.6,使用PyCharm IDE。
运行时,我的基于Tkinter GUI的应用程序会自动执行我在类下定义的退出函数。只有当用户点击"终止"窗口才能关闭所需的效果。 GUI窗口中的按钮。
到目前为止我的代码如下:
import webbrowser
import tkinter as ttk
from PIL import ImageTk, Image
##Application main window setup.
window = ttk.Tk()
window.maxsize(width=200, height=200)
window.minsize(width=200,height=200)
window.config(bg=("black"))
window.title("Hello World")
##Set a 'class' for exit function of application.
class Exit():
##Defines the countdown timer and sets parameters that need to be satisfied before exit.
def timer(self):
countdown = 3
self.x = int
for self.x in reversed(range(0,countdown + 1)):
print(self.x)
##When 'x' reahces -1 the application exits.
if self.x > -1:
print("Bye!")
window.destroy()
##Otherwise a label displaying a text message appears.
else:
swell = ttk.Label(text=("'Hello World!'"),bg=("black"),fg=("white"),font=("Times New Roman",12,"bold"))
swell.place(x=50,y=50)
##Retrieve the defined 'timer' function from the 'Exit' class.
exit=Exit()
exit.timer()
##Button with attahced command to execute the exit of application via user input.
quitButton=ttk.Button(
window,text=("Terminate"),bg=("red"),fg=("white"),font=("bold"),width=20,height=1,anchor=ttk.S,command=lambda: exit)
quitButton.place(x=6,y=150)
window.mainloop()
感谢任何形式的帮助,我提前感谢你。
*作为旁注,我可以从按钮成功发出命令,但检索到的功能只有一行。我似乎无法处理多行代码。
答案 0 :(得分:2)
我认为发生的事情是你在timer类方法中破坏了窗口。在for循环之后,x将等于0.因此它大于-1,并且窗口类被销毁。 Quitbutton尝试使用窗口,但它已被破坏。
在输出中我假设你看到'再见'
我得到了正确的结果:
import tkinter as ttk
from time import sleep
##Application main window setup.
window = ttk.Tk()
window.maxsize(width=200, height=200)
window.minsize(width=200, height=200)
window.config(bg=("black"))
window.title("Hello World")
##Set a 'class' for exit function of application.
class Exit():
"""
Defines the countdown timer and sets parameters
that need to be satisfied before exit.
"""
def __init__(self):
self.countdown = 3
swell = ttk.Label(text=("Hello World!"), bg=("black"),
fg=("white"), font=("Times New Roman", 12, "bold"))
swell.place(x=50,y=50)
def quit(self):
for iteration in reversed(range(0, self.countdown + 1)):
print(iteration)
sleep(1)
print("Bye!")
window.destroy()
##Retrieve the defined 'timer' function from the 'Exit' class.
exit=Exit()
##Button with attahced command to execute the exit of application via user input.
quitButton=ttk.Button(
window,text=("Terminate"), bg=("red"), fg=("white"), font=("bold"),
width=20, height=1, anchor=ttk.S, command=lambda: exit.quit())
quitButton.place(x=6,y=150)
window.mainloop()
你可以在这里看到我在exit类中也使用了init方法。它是一种特殊的方法,可以在启动类时自动运行。
它不需要太多改变。我所做的只是将销毁窗口函数移动到它自己的类方法中,并设置第二个窗口实例命令来运行此方法。