Python 过一段时间后更换Windows Tkinter

Python 过一段时间后更换Windows Tkinter,python,user-interface,python-3.x,tkinter,Python,User Interface,Python 3.x,Tkinter,一段时间后我需要在windows之间切换,但我的代码无法正常工作 我的窗口只有在我点击按钮时才会改变。我试着让lambda服从我的指挥,但还是不行 import tkinter as tk # python3 #import Tkinter as tk # python import datetime TITLE_FONT = ("Helvetica", 18, "bold") time_start = datetime.datetime.now() delta_time = datet

一段时间后我需要在windows之间切换,但我的代码无法正常工作

我的窗口只有在我点击按钮时才会改变。我试着让lambda服从我的指挥,但还是不行

import tkinter as tk   # python3
#import Tkinter as tk   # python
import datetime
TITLE_FONT = ("Helvetica", 18, "bold")
time_start = datetime.datetime.now()
delta_time = datetime.timedelta(seconds = 5)
class SampleApp(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        # the container is where we'll stack a bunch of frames
        # on top of each other, then the one we want visible
        # will be raised above the others
        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)
        self.frames = {}

        for F in (StartPage, TimePage):
            page_name = F.__name__
            frame = F(container, self)
            self.frames[page_name] = frame

            # put all of the pages in the same location;
            # the one on the top of the stacking order
            # will be the one that is visible.
            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame("StartPage")

    def show_frame(self, page_name):
        '''Show a frame for the given page name'''
        frame = self.frames[page_name]
        frame.tkraise()


class StartPage(tk.Frame):
    def __init__(self, parent, controller):

        tk.Frame.__init__(self, parent)
        self.controller = controller
        label = tk.Label(self, text="This is the start page", font=TITLE_FONT)
        label.pack(side="top", fill="x", pady=10)

        button1 = tk.Button(self, text="Go to Time Page",
                            command=lambda: controller.show_frame(self.start_Counting()) )
        button1.pack()

    def start_Counting(self):
        global time_start
        time_start = datetime.datetime.now()
        return 'TimePage'

class TimePage(tk.Frame):

    def __init__(self, parent, controller):
        global delta_time
        tk.Frame.__init__(self, parent)
        self.controller = controller
        label = tk.Label(self, text="This is Time Page", font=TITLE_FONT)
        label.pack(side="top", fill="x", pady=10)
        self.time_exit = tk.StringVar()
        self.time_exit.set('%s' %datetime.datetime.now())
        label2 = tk.Label(self, text=self.time_exit, font=TITLE_FONT)
        label2.pack(side="top", fill="x", pady=10)
        button = tk.Button(self, text="Go to the start page",
                           command=lambda: controller.show_frame("StartPage"))
        button.pack()

    def update_Page(self):
        global time_start, delta_time
        #print('Executou o atualizar')
        time_until = delta_time - (datetime.datetime.now() - time_start)
        self.time_exit.set('%s' %time_until)
        if time_until <= 0:
            self.controller.show_frame('StartPage') # Go to the start_page after 5 seconds
        self.after(1000, update_Page)

if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()
将tkinter作为tk#python3导入
#将Tkinter作为tk#python导入
导入日期时间
标题字体=(“Helvetica”,18,“粗体”)
time\u start=datetime.datetime.now()
delta_time=datetime.timedelta(秒=5)
类SampleApp(tk.tk):
定义初始化(self,*args,**kwargs):
tk.tk.\uuuuu初始化(self,*args,**kwargs)
#容器是我们堆叠一堆框架的地方
#在彼此的上面,然后是我们想要看到的
#将被提升到其他人之上
容器=tk.框架(自身)
container.pack(side=“top”,fill=“both”,expand=True)
container.grid_rowconfigure(0,权重=1)
container.grid\u column配置(0,权重=1)
self.frames={}
对于F英寸(起始页,时间页):
页面名称=F.\u名称__
框架=F(容器,自身)
self.frames[页面名称]=框架
#将所有页面放在同一位置;
#在堆叠顺序顶部的那个
#将是可见的。
frame.grid(行=0,列=0,sticky=“nsew”)
自我展示框架(“起始页”)
def显示框(自身,页面名称):
''显示给定页面名称''的框架'
frame=self.frames[页面名称]
frame.tkraise()
类起始页(传统框架):
定义初始化(自、父、控制器):
tk.Frame.\uuuu init\uuuuu(自,父)
self.controller=控制器
label=tk.label(self,text=“这是起始页”,font=TITLE\u font)
标签包装(侧面=“顶部”,填充=“x”,pady=10)
button1=tk.按钮(self,text=“转到时间页”,
command=lambda:controller.show\u frame(self.start\u Counting())
按钮1.pack()
def开始计数(自身):
全局时间开始
time\u start=datetime.datetime.now()
返回“TimePage”
类时间页(tk.Frame):
定义初始化(自、父、控制器):
全球三角洲时间
tk.Frame.\uuuu init\uuuuu(自,父)
self.controller=控制器
label=tk.label(self,text=“这是时间页”,font=TITLE\u font)
标签包装(侧面=“顶部”,填充=“x”,pady=10)
self.time_exit=tk.StringVar()
self.time\u exit.set(“%s”%datetime.datetime.now())
label2=tk.Label(self,text=self.time\u exit,font=TITLE\u font)
标签2.pack(side=“top”,fill=“x”,pady=10)
button=tk.button(self,text=“转到起始页”,
command=lambda:controller.show_帧(“起始页”))
button.pack()
def更新页面(自我):
全局时间开始,增量时间
#打印('Executou o atualizar')
time\u until=delta\u time-(datetime.datetime.now()-time\u start)
self.time\u exit.set(“%s”%time\u直到)

如果时间一直到您从未调用
更新页面
。第一步是调用该函数。但是,不需要重复对datetime对象进行计算。只需计算您未来需要的秒数,然后在
之后调用一次

我改进了格式,但我相信这个问题可能需要更多关于遇到的确切错误的细节。看见