from tkinter import Tk, Frame, Button, Label, Entry, StringVar, IntVar , mainloop
import datetime
root = Tk()
v1 = StringVar()
v2 = StringVar()
v3 = StringVar()
v4 = int()
v5 = int()
v6 = int()
frame1 = Frame(root)
frame2 = Frame(root)
frame3 = Frame(root)
frame1.pack(padx = 20, pady = 20)
frame2.pack(padx = 20, pady = 20)
frame3.pack(padx = 20, pady = 20)
Label(frame1, text = "开始时间:").grid(row = 0, column = 0)
Entry(frame1, width = 6, textvariable = v1, validate = "key").grid(row = 0, column = 1)
Label(frame1, text = "年").grid(row = 0, column = 2)
Entry(frame1, width = 6, textvariable = v2, validate = "key").grid(row = 0, column = 3)
Label(frame1, text = "月").grid(row = 0, column = 4)
Entry(frame1, width = 6, textvariable = v3, validate = "key").grid(row = 0, column = 5)
Label(frame1, text = "日").grid(row = 0, column = 6)
def callbackMin():
v4 = int(v1.get())
v5 = int(v2.get())
v6 = int(v3.get())
Startday = datetime.date(v4, v5, v6)
theButtonMin = Button(frame1, text = "获取时间", command = callbackMin).grid(row = 0, column = 7)
frame3.bind("<Button>", callbackMin)
print(Startday)
mainloop()
目的是触发按钮时在回调函数中为变量赋值,变量在后续代码中使用。
通过Button组件回调函数获取文本框中输入的年月日时间,将获取到的时间赋值给变量Startday,后续程序使用这两个变量进行计算。
但程序运行未打开tkinter窗口,没法通过Button触发获取文本框内容,也就没法为变量Startday赋值。但程序后续代码,需要这个变量参与计算,这时会提示变量未定义(Undefined name ‘Startday’)。
尝试过为Startday定义全局变量,或在callbackSetMin()中return出这个变量值,或初始化变量,都失败了。
救助大家有啥办法。