python - 使用 tkinter python 中的列表框项目取消选中复选框并打印列表框的当前项目
问题描述
我有两个复选框 Pass 和 FAIL 我正在解析 column1 的 csv 并添加两个复选框。
X = 100
Y = 71
for item in column1[key]:
if item != '':
listbox.insert('end', item)
chk_state1 = tk.IntVar()
tk.Checkbutton(self.root, text="PASS",variable=chk_state1,font=("Arial Bold", 8),).place(x=X,y=Y)
chk_state2 = tk.IntVar()
tk.Checkbutton(self.root, text="FAIL",variable=chk_state2,font=("Arial Bold", 8),).place(x=X+80,y=Y)
Y = Y +20
- 如何知道column1复选框的哪一行被选中
- 一次只能选择一个复选框
任何输入都会有所帮助,提前致谢
解决方案
对于项目 1,使用字典(项目名称作为键)来保存创建的 tkinter IntVar
。然后,您可以稍后通过字典来获取每个项目的选中状态。
对于第 2 项,您可以使用Radiobutton
代替Checkbutton
。
X = 100
Y = 71
myfont = ('Arial Bold', 8)
self.cblist = {}
for item in column1[key]:
if item != '':
listbox.insert('end', item)
chk_state = tk.IntVar(value=0)
tk.Radiobutton(self.root, text='PASS', variable=chk_state, value=1, font=myfont).place(x=X, y=Y)
tk.Radiobutton(self.root, text='FAIL', variable=chk_state, value=0, font=myfont).place(x=X+80, y=Y)
self.cblist[item] = chk_state
Y += 22
tk.Button(self.root, text='Check', command=self.check).place(x=X, y=Y+10)
...
def check(self):
result = ('Fail', 'Pass')
print(', '.join(f'{item}:{result[var.get()]}' for item, var in self.cblist.items()))
请注意,我添加了一个按钮来打印每个项目的选定状态。
推荐阅读
- javascript - 从下拉值更改的代码中获取价值
- python - 覆盖帮助字符串
- c# - 使用 c# 绕过 Winforms 的鼠标事件
- flutter - 什么时候应该执行 dispose() 方法?
- xamarin - WifiNetworkSuggestion 未定义 (Xamarin.android)
- mac-catalyst - 当用户在 Mac Catalyst 中退出应用程序时如何关闭 UIDocument 并保存数据
- javascript - 使用 NodeJS 的 Axios 路由 POST 出现问题
- api - 在 Curl Windows 中发布请求以进行 Api 测试
- sdk - Android Emulator 30.2.6 在 iMac 2011 上崩溃
- flutter - Flutter:连续构建资源密集型小部件