我试图通过将Tkinter代码放入类来清理它,但我无法调用特定的屏幕。当我只使用函数时,我到处使用Something.place_forget()
来获得下一页。我的所有小部件都是在全局范围内定义的,因此这是必要的,但是我希望能够从我在其各自的局部范围内定义小部件的类中调用方法
tkinter imports[...]
from functools import partial
gui = Tk()
gui.geometry("700x700")
pagenumber = 1
class Input:
def __init__(self, screen):
self.screen = screen
def checkPage(self, page):
global pagenumber
pagenumber = page
print(pagenumber)
def mainscreen(self):
global pagenumber
button_input = Button(self.screen, text="Input", padx="50", pady="25", bg="lightgrey",
command=partial(self.checkPage, 2))
[...]
button_input.place(x="400", y="350")
def infoPage(self):
title_enter = Label(self.screen, text="Enter")
[...]
submit.place(x="290", y="420")
def ingredientsPage(self):
pass
inputscreen = Input(gui)
if pagenumber == 1:
inputscreen.mainscreen()
elif pagenumber == 2:
print("reached")
inputscreen.infoPage()
gui.mainloop()
我试图做的是检查页码(在类中得到更新)并使用它显示相应的页面。尽管pagenumber
得到了很好的更新,但它并没有显示预期的屏幕
这个答案是由acw给出的,但我把它放在这里,因为他没有直接在stackoverflow上回答。基本上使用clear方法,然后调用下一个类
看起来不错,你错过了一件事,一个实际更新屏幕的回调
我不确定这是否会像您所希望的那样工作,您很可能仍然必须忘记您不希望显示的小部件。您可以轻松地在类中创建一个函数,忘记所有小部件的位置,并在inputscreen.infoPage()和inputscreen.mainscreen()方法中调用它们。在一个不是place的小部件上调用place_forget()并没有什么坏处,所以这是最简单的方法。我从未测试过性能
如果您想让函数忘记最后一页变量,您只需要将程序设计为仅可预测地从一页到另一页流动,或者创建一个全局变量来跟踪您所在的最后一页,并在页面更改时更新它。我没有运行此代码,因此如果有任何错误,我深表歉意
相关问题 更多 >
编程相关推荐