Python 过一段时间后更换Windows Tkinter
一段时间后我需要在windows之间切换,但我的代码无法正常工作 我的窗口只有在我点击按钮时才会改变。我试着让lambda服从我的指挥,但还是不行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
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对象进行计算。只需计算您未来需要的秒数,然后在
之后调用一次 我改进了格式,但我相信这个问题可能需要更多关于遇到的确切错误的细节。看见