<p>看起来不错,你错过了一件事,一个实际更新屏幕的回调</p>
<pre class="lang-py prettyprint-override"><code>def page_monitor():
if pagenumber == 1:
inputscreen.mainscreen()
elif pagenumber == 2:
print("reached")
inputscreen.infoPage()
gui.after(1000, page_monitor)
page_monitor()
</code></pre>
<p>我不确定这是否会像您所希望的那样工作,您很可能仍然必须忘记您不希望显示的小部件。您可以轻松地在类中创建一个函数,忘记所有小部件的位置,并在inputscreen.infoPage()和inputscreen.mainscreen()方法中调用它们。在一个不是place的小部件上调用place_forget()并没有什么坏处,所以这是最简单的方法。我从未测试过性能</p>
<pre class="lang-py prettyprint-override"><code>tkinter imports[...]
from functools import partial
gui = Tk()
gui.geometry("700x700")
pagenumber = 1
class Input:
def __init__(self, screen):
self.screen = screen
self.button_input = Button(self.screen, text="Input", padx="50",
pady="25", bg="lightgrey",
command=partial(self.changePage, 2))
self.title_enter = Label(self.screen, text="Enter")
def changePage(self, page):
global pagenumber
pagenumber = page
print(pagenumber)
def forget_widgets()
self.button_input.place_forget()
self.title_enter.place_forget()
def mainscreen(self):
self.forget_widgets()
self.button_input.place(x="400", y="350")
def infoPage(self):
self.forget_widgets()
self.title_enter.place(x="290", y="420")
def ingredientsPage(self):
pass
inputscreen = Input(gui)
def page_monitor():
if pagenumber == 1:
inputscreen.mainscreen()
elif pagenumber == 2:
print("reached")
inputscreen.infoPage()
gui.after(1000, page_monitor)
page_monitor()
gui.mainloop()
</code></pre>
<p>如果您想让函数忘记最后一页变量,您只需要将程序设计为仅可预测地从一页到另一页流动,或者创建一个全局变量来跟踪您所在的最后一页,并在页面更改时更新它。我没有运行此代码,因此如果有任何错误,我深表歉意</p>