【发布时间】:2019-10-22 03:12:08
【问题描述】:
我使用 tkinter Checkbutton 来获取所需的信息,我的脚本是:
from tkinter import *
from tkinter.filedialog import askopenfilenames
window = Tk()
window.title('File Viewer')
frm=Frame(window)
filelist=[]
def selectfiles():
files=askopenfilenames(initialdir="D:\\Document", title="Select files")
fileList = window.tk.splitlist(files)
filelist.append(fileList)
btn = Button(frm,text='Select Files',command=selectfiles)
frm.pack()
btn.pack(side=RIGHT, fill=BOTH)
Heads = {'Head A': "HeadAEPTrend1 (Float)", 'Head B': "HeadBEPTrend1 (Float)"}
head_list=[]
for (key, value) in Heads.items():
strVar = StringVar()
head_list.append(strVar)
cb = Checkbutton(frm, text=key, variable=strVar, onvalue=value, offvalue='NA')
cb.pack(anchor=W)
parameters=[strvar.get() for strvar in head_list if strvar.get() != 'NA']
window.mainloop()
有两件事我没有预料到:
- 在 GUI 中默认是同时选择头 A 和头 B。(我希望默认是不选择头)
- 关闭 GUI 后,我只能在 shell 中调用
parameters时获得['','']。
有人知道怎么回事吗?
【问题讨论】:
-
Checkbutton 的变量需要被赋予一个与其
onvalue或offvalue匹配的值,它才能正常工作。并且parameters在主循环之前被设置一次;它只会及时反映当时的变量值。
标签: python tkinter tkinter.checkbutton