[英]Tkinter - Python 3.3 - Problems destroying a window
我目前正在用tkinter
编写一个基本程序,并且对一个特定的窗口 (称为“ appetiser
”)有问题。
前一个屏幕上的按钮。
我真的对自己遇到的问题感到困惑,所以我在下面粘贴了整个appetiser
窗口。 (对不起,只是将其丢到这里)
#Appetiser Window
def appetiser():
global app, root
#----------------------------------MEAL-1------------------------
#----------------------------------MEAL-1------------------------
def PlusMix():
global MixQuan
MixQuan = MixQuan + 1
DisplayButton["text"]=str(MixQuan)
def NegMix():
global MixQuan
MixQuan = MixQuan - 1
DisplayButton["text"]=str(MixQuan)
Label(app, text = "", width = 65, height = 5).grid(row = 1, column = 0, sticky = N)
Label(app,text = "Mixed Starter", font = ("roboto", 20)).grid(row = 2, column = 1, sticky = W)
DisplayButton = Button(app, text = MixQuan, bg="magenta")
DisplayButton.grid(column = 3, row = 2, sticky = W)
DisplayButton.config(height = 10, width = 10 )
Plus1Button = Button(app, text = "+1", command=PlusMix, bg="magenta")
Plus1Button.grid(column = 4, row = 2, sticky = W)
Plus1Button.config(height = 10, width = 10 )
Neg1Button = Button(app, text = "-1", command=NegMix, bg="magenta")
Neg1Button.grid(column = 2, row = 2, sticky = W)
Neg1Button.config(height = 10, width = 10 )
#----------------------------------MEAL-2-------------------------
#----------------------------------MEAL-2-------------------------
def PlusDuck():
global DuckQuan
DuckQuan = DuckQuan + 1
Display2Button["text"]=str(DuckQuan)
def NegDuck():
global DuckQuan
DuckQuan = DuckQuan - 1
Display2Button["text"]=str(DuckQuan)
Label(app,text = "Crispy Duck", font = ("roboto", 20)).grid(row = 3, column = 1, sticky = W)
Display2Button = Button(app, text = DuckQuan, bg="magenta")
Display2Button.grid(column = 3, row = 3, sticky = W)
Display2Button.config(height = 10, width = 10 )
Plus2Button = Button(app, text = "+1", command=PlusDuck, bg="magenta")
Plus2Button.grid(column = 4, row = 3, sticky = W)
Plus2Button.config(height = 10, width = 10 )
Neg2Button = Button(app, text = "-1", command=NegDuck, bg="magenta")
Neg2Button.grid(column = 2, row = 3, sticky = W)
Neg2Button.config(height = 10, width = 10 )
#----------------------------------MEAL-3---------------------------
#----------------------------------MEAL-3---------------------------
def plus3():
global LambQuan
LambQuan = LambQuan + 1
Display3Button["text"]=str(LambQuan)
def neg3():
global LambQuan
LambQuan = LambQuan - 1
Display3Button["text"]=str(LambQuan)
Label(app,text = "Lamb starter", font = ("roboto", 20)).grid(row = 4, column = 1, sticky = W)
Display3Button = Button(app, text = LambQuan, bg="magenta")
Display3Button.grid(column = 3, row = 4, sticky = W)
Display3Button.config(height = 10, width = 10 )
Plus3Button = Button(app, text = "+1", command=plus3, bg="magenta")
Plus3Button.grid(column = 4, row = 4, sticky = W)
Plus3Button.config(height = 10, width = 10 )
Neg3Button = Button(app, text = "-1", command=neg3, bg="magenta")
Neg3Button.grid(column = 2, row = 4, sticky = W)
Neg3Button.config(height = 10, width = 10 )
#----------------------------------------------------
#----------------------------------------------------
BackButton = Button(app, text = "Back", command=OpenMain, bg="magenta")
BackButton.grid(column = 2, row = 5, sticky = W)
BackButton.config(height = 10, width = 10 )
FinishButton = Button(app, text = "Finish", command=OpenFinish, bg="magenta")
FinishButton.grid(column = 4, row = 5, sticky = W)
FinishButton.config(height = 10, width = 10 )
app = Frame(root)
app.grid()
Label(app, text = "", width = 75, height = 20).grid(row = 1, column = 0, sticky = N)
root.mainloop()
从其他窗口调用了2个函数OpenMain()
和OpenWindow()
以返回到先前的屏幕,但是在其他窗口中调用它们时,它们可以正常工作。
我只有从“ [ FinishButton
] ”和“ [ BackButton
] ”从此窗口调用函数时遇到问题。
以下是先前已调用且可以正常运行的两个函数。
#Wipe window and open main
def OpenMain():
global app, root
app.destroy()
app = Frame(root)
app.grid()
main()
#Wipe appetiser window and draw finish window
def OpenFinish():
global app, root
app.destroy()
app = Frame(root)
app.grid()
FinishWindow()
当OpenFinish()
函数被调用时,“ appetiser
” 窗口 ,不被破坏,并直接下创建的主窗口 appetiser
窗口 。
就像我说的那样,对不起,我只是将代码转储到这里,但是我无法弄清楚问题所在。
这些功能在其他窗口中也能正常工作,并且我遵循了相同的格式来为程序的其余部分创建窗口。
任何帮助将非常感激!
global
-s .Tk()
/ .Toplevel()
/ .Frame()
容器” .Button()
有权通过.destroy()
+对self
赋值来self
# <appetiser> is not a window, it is a procedure ( a segment of code )
#
def appetiser():
global app, root
...
BackButton = Button( app,
text = "Back",
command = OpenMain, # --> app.destroy()-->
bg = "magenta"
)
...
FinishButton = Button( app,
text = "Finish",
command = OpenFinish, # --> app.destroy()-->
bg = "magenta"
)
...
# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
# v
def OpenMain():
global app, root
app.destroy() # <-- COMMIT SUICCIDE
app = Frame( root ) # new Frame instance
app.grid()
...
def OpenFinish():
global app, root
app.destroy() # <-- COMMIT SUICCIDE
app = Frame( root ) # new Frame instance
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.