Python 使用TKInter构建应用程序,需要一些帮助
基本上,我已经制作了一个GUI应用程序,用于与在线游戏社区相关的个人用途,我现在有点困了。除了一件事,它正在按预期工作。我需要它能够跟踪多个“激活”和启动单独的计时器,但也要跟踪以前的计时器,这样它就可以在最后合计。例如,如果我激活“服务1”,它当前会启动一个计时器,但当我停用它并再次激活它时,它将忽略初始计时器,只启动一个新的计时器。我怎样才能使它把两个计时器加在一起,打印出“总花费时间” 这是与我的查询相关的代码Python 使用TKInter构建应用程序,需要一些帮助,python,tkinter,Python,Tkinter,基本上,我已经制作了一个GUI应用程序,用于与在线游戏社区相关的个人用途,我现在有点困了。除了一件事,它正在按预期工作。我需要它能够跟踪多个“激活”和启动单独的计时器,但也要跟踪以前的计时器,这样它就可以在最后合计。例如,如果我激活“服务1”,它当前会启动一个计时器,但当我停用它并再次激活它时,它将忽略初始计时器,只启动一个新的计时器。我怎样才能使它把两个计时器加在一起,打印出“总花费时间” 这是与我的查询相关的代码 def time_convert3(sec): global PALe
def time_convert3(sec):
global PALenght
mins = sec // 60
sec = round(sec % 60)
hours = mins // 60
mins = mins % 60
SIDLenght = ("{0}H:{1}M:{2}S".format(int(hours),int(mins),sec))
print(PALenght)
def selectPA():
global PAStart
global PALenght
global PACount
if var.get() == 1:
PAStart = time.time()
print(PAStart)
PACount = PACount + 1
root.after(10, lambda: Label(root, text= 'PA Activations: ' + str(PACount), bg='#1aa3ff', fg='Black' ).place(relx=0.1, rely=0.85, relwidth=0.3, relheight=0.05))
root.after(1000, lambda: portA.place(relx=0.4, rely=0.55, relwidth=0.2, relheight=0.05))
root.after(3000, lambda: portA.place_forget())
elif var.get() == 0:
PAEnd = time.time()
PATotal = PAEnd - PAStart
time_convert3(PATotal)
root.after(1000, lambda: portB.place(relx=0.4, rely=0.55, relwidth=0.2, relheight=0.05))
root.after(3000, lambda: portB.place_forget())
var = IntVar()
PACheck = Checkbutton(root, text="Activate/Deactivate PA ", variable = var,bg='#1aa3ff', fg='Black', command = selectPA).place(relx=0.13, rely=0.55, relwidth=0.2, relheight=0.05)
开始时,你应该设置
PATotal = 0
然后将新时间添加到总时间
PATotal += (PAEnd - PAStart)
最小工作示例
import tkinter as tk
import time
# --- functions ---
def func():
global total
global time_start
if cb_var.get():
time_start = time.time()
else:
total += (time.time() - time_start)
label['text'] = 'Total: {:.2f}s'.format(total)
# --- main ---
total = 0
time_start = 0
root = tk.Tk()
cb_var = tk.BooleanVar()
label = tk.Label(root, text='Total: 0.00s')
label.pack()
cb = tk.Checkbutton(root, text='Running ...', variable=cb_var, command=func)
cb.pack()
root.mainloop()
import tkinter as tk
import time
# --- functions ---
def func():
global total
global time_start
if cb_var.get():
time_start = time.time()
else:
all_times.append(time.time() - time_start)
label_times['text'] += '\n{:.2f}'.format(all_times[-1])
total = sum(all_times)
label_total['text'] = 'Total: {:.2f}s'.format(total)
# --- main ---
all_times = []
total = 0
time_start = 0
root = tk.Tk()
cb_var = tk.BooleanVar()
label_times = tk.Label(root, text='Times')
label_times.pack()
label_total = tk.Label(root, text='Total: 0.00s')
label_total.pack()
cb = tk.Checkbutton(root, text='Running ...', variable=cb_var, command=func)
cb.pack()
root.mainloop()
或者在开始时创建列表
all_times = []
然后将PAEnd-PAStart
追加到此列表
all_times.append(PAEnd - PAStart)
你们可以对列表中的所有值求和
PATotal = sum(all_times)
最小工作示例
import tkinter as tk
import time
# --- functions ---
def func():
global total
global time_start
if cb_var.get():
time_start = time.time()
else:
total += (time.time() - time_start)
label['text'] = 'Total: {:.2f}s'.format(total)
# --- main ---
total = 0
time_start = 0
root = tk.Tk()
cb_var = tk.BooleanVar()
label = tk.Label(root, text='Total: 0.00s')
label.pack()
cb = tk.Checkbutton(root, text='Running ...', variable=cb_var, command=func)
cb.pack()
root.mainloop()
import tkinter as tk
import time
# --- functions ---
def func():
global total
global time_start
if cb_var.get():
time_start = time.time()
else:
all_times.append(time.time() - time_start)
label_times['text'] += '\n{:.2f}'.format(all_times[-1])
total = sum(all_times)
label_total['text'] = 'Total: {:.2f}s'.format(total)
# --- main ---
all_times = []
total = 0
time_start = 0
root = tk.Tk()
cb_var = tk.BooleanVar()
label_times = tk.Label(root, text='Times')
label_times.pack()
label_total = tk.Label(root, text='Total: 0.00s')
label_total.pack()
cb = tk.Checkbutton(root, text='Running ...', variable=cb_var, command=func)
cb.pack()
root.mainloop()
开始时,您应该设置
PATotal = 0
然后将新时间添加到总时间
PATotal += (PAEnd - PAStart)
最小工作示例
import tkinter as tk
import time
# --- functions ---
def func():
global total
global time_start
if cb_var.get():
time_start = time.time()
else:
total += (time.time() - time_start)
label['text'] = 'Total: {:.2f}s'.format(total)
# --- main ---
total = 0
time_start = 0
root = tk.Tk()
cb_var = tk.BooleanVar()
label = tk.Label(root, text='Total: 0.00s')
label.pack()
cb = tk.Checkbutton(root, text='Running ...', variable=cb_var, command=func)
cb.pack()
root.mainloop()
import tkinter as tk
import time
# --- functions ---
def func():
global total
global time_start
if cb_var.get():
time_start = time.time()
else:
all_times.append(time.time() - time_start)
label_times['text'] += '\n{:.2f}'.format(all_times[-1])
total = sum(all_times)
label_total['text'] = 'Total: {:.2f}s'.format(total)
# --- main ---
all_times = []
total = 0
time_start = 0
root = tk.Tk()
cb_var = tk.BooleanVar()
label_times = tk.Label(root, text='Times')
label_times.pack()
label_total = tk.Label(root, text='Total: 0.00s')
label_total.pack()
cb = tk.Checkbutton(root, text='Running ...', variable=cb_var, command=func)
cb.pack()
root.mainloop()
或者在开始时创建列表
all_times = []
然后将PAEnd-PAStart
追加到此列表
all_times.append(PAEnd - PAStart)
你们可以对列表中的所有值求和
PATotal = sum(all_times)
最小工作示例
import tkinter as tk
import time
# --- functions ---
def func():
global total
global time_start
if cb_var.get():
time_start = time.time()
else:
total += (time.time() - time_start)
label['text'] = 'Total: {:.2f}s'.format(total)
# --- main ---
total = 0
time_start = 0
root = tk.Tk()
cb_var = tk.BooleanVar()
label = tk.Label(root, text='Total: 0.00s')
label.pack()
cb = tk.Checkbutton(root, text='Running ...', variable=cb_var, command=func)
cb.pack()
root.mainloop()
import tkinter as tk
import time
# --- functions ---
def func():
global total
global time_start
if cb_var.get():
time_start = time.time()
else:
all_times.append(time.time() - time_start)
label_times['text'] += '\n{:.2f}'.format(all_times[-1])
total = sum(all_times)
label_total['text'] = 'Total: {:.2f}s'.format(total)
# --- main ---
all_times = []
total = 0
time_start = 0
root = tk.Tk()
cb_var = tk.BooleanVar()
label_times = tk.Label(root, text='Times')
label_times.pack()
label_total = tk.Label(root, text='Total: 0.00s')
label_total.pack()
cb = tk.Checkbutton(root, text='Running ...', variable=cb_var, command=func)
cb.pack()
root.mainloop()
首先,您必须放弃使用
global…
,并为您想要计算的每项服务使用类对象。我明白了,您能给我一个如何计算的示例吗?我在2-3天前才开始使用python和Tkinter,我是全新的。当您停用计时器时,您应该将结果保存在列表或字典中,以便以后可以使用它来计算总值。或者至少在开始时设置PATotal=0
,然后将其添加到PATotal
(+=
)中,而不是分配(=
),首先你必须放弃使用全局…
,并对你想要计算的每项服务使用类对象?我在2-3天前才开始使用python和Tkinter,我是全新的。当您停用计时器时,您应该将结果保存在列表或字典中,以便以后可以使用它来计算总值。或者至少在开始时设置PATotal=0
,然后将其添加到PATotal
(+=
),而不是赋值(=
)