【发布时间】:2020-04-21 07:24:52
【问题描述】:
我正在尝试使用 tkinter 创建一个程序,该程序允许员工单击“打卡”按钮,该按钮获取当前时间并创建一个新按钮“打卡”,单击“打卡”按钮后,该按钮将再次获取当前时间然后按每个按钮单击的时间增量显示总小时数。我的问题是由于未定义“ClockedIn”变量,程序没有返回总工作时间。我相信这是代码安排的问题,但我被卡住了。有谁知道如何解决这一问题?我是初学者编码器,并感谢任何反馈。谢谢。
我的代码如下:
from tkinter import *
import tkinter as tk
from tkinter import ttk
import time
import datetime
window = Tk()
def onclick1():
label = tk.Label(text ="Clocked In")
label.grid(row = 1, column = 3)
label2 = tk.Label(text = time.strftime("%I:%M"))
label2.grid(row =1, column = 5)
CLockedIn = time.time()
button2 = ttk.Button(window, text ="Clock Out")
button2.grid(row = 2, column = 1)
button2.config(command = onclick2)
def onclick2():
label4 = tk.Label(text ="Clocked Out")
label4.grid(row = 2, column = 3)
ClockOut = time.time()
label5 = tk.Label(text = time.strftime("%I:%M"))
label5.grid(row =2, column = 5)
Hours = int(ClockOut-CLockedIn)
HoursLabel= tk.Label(Hours)
HoursLabel.grid(row = 3, column = 4)
btn1 = ttk.Button(window, text = "Clock In")
btn1.grid(row=1,column=1)
btn1.config(command= onclick1)
window.mainloop()
【问题讨论】:
-
您可以将
ClockedIn传递给onclick2()函数,因此不需要全局变量。最好使用datetime.now()而不是time.time()。那么ClockOut - ClockedIn将是一个timedelta实例,它可以以h:mm:ss格式显示时差。
标签: python loops datetime tkinter