Python 使用TKInter构建应用程序,需要一些帮助

Python 使用TKInter构建应用程序,需要一些帮助,python,tkinter,Python,Tkinter,基本上,我已经制作了一个GUI应用程序,用于与在线游戏社区相关的个人用途,我现在有点困了。除了一件事,它正在按预期工作。我需要它能够跟踪多个“激活”和启动单独的计时器,但也要跟踪以前的计时器,这样它就可以在最后合计。例如,如果我激活“服务1”,它当前会启动一个计时器,但当我停用它并再次激活它时,它将忽略初始计时器,只启动一个新的计时器。我怎样才能使它把两个计时器加在一起,打印出“总花费时间” 这是与我的查询相关的代码 def time_convert3(sec): global PALe

基本上,我已经制作了一个GUI应用程序,用于与在线游戏社区相关的个人用途,我现在有点困了。除了一件事,它正在按预期工作。我需要它能够跟踪多个“激活”和启动单独的计时器,但也要跟踪以前的计时器,这样它就可以在最后合计。例如,如果我激活“服务1”,它当前会启动一个计时器,但当我停用它并再次激活它时,它将忽略初始计时器,只启动一个新的计时器。我怎样才能使它把两个计时器加在一起,打印出“总花费时间”

这是与我的查询相关的代码

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
+=
),而不是赋值(
=