python - 填写时Tkinter检查按钮干扰
问题描述
我正在使用 tkinter 开发 gui。我目前正在尝试制作几个带有几个复选按钮的标签框。问题是一个检查按钮在一个窗口中被交叉,另一个窗口中的另一个也被交叉。
我一直在寻找类似的问题,但我没有找到。作为一个初学者,我真的不明白问题出在哪里。
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from scipy.stats import linregress
import pandas as pd
window= tk.Tk()
#creating the 2 labelframes
models = tk.LabelFrame(window, text="Models", padx=10, pady=10)
models.grid(padx=10, pady=10, sticky='W')
param = tk.LabelFrame(window, text="params", padx=10, pady=10)
param.grid(column=0, row=10, sticky='W', padx= 10)
# adding checkbuttons to the first labelframe
lin_cb = tk.Checkbutton(models, text="linear regression")
lin_cb.grid(column=0, row=2, sticky='W')
nlin_cb = tk.Checkbutton(models, text="non-linear regression")
nlin_cb.grid(column=0, row=5, sticky='W')
#labels for second labelframe
tk.Label(param, text="substate").grid(row=1, sticky='W')
tk.Label(param, text="velocity").grid(row=2, sticky='W')
tk.Label(param, text="if inhibited").grid(row=3, sticky='W')
tk.Label(param, text="inibitor").grid(row=4, sticky='W')
#checkbutton
su_M=tk.Checkbutton(param, text='M')
su_M.grid(column=1, row=1, sticky='W')
su_mM=tk.Checkbutton(param, text='mM')
su_mM.grid(column=2, row=1, sticky='W')
window.mainloop()
在继续程序从交叉的复选按钮中提取信息之前,我必须了解如何解决这个问题。谢谢大家。我希望我给了你所有必要的信息。我试图尽可能地总结代码。
解决方案
要使用Checkbutton
,您需要创建 tkinter 变量并将它们与每个Checkbutton
.
import tkinter as tk
window= tk.Tk()
models = tk.LabelFrame(window, text="Models", padx=10, pady=10)
models.grid(padx=10, pady=10, sticky='W')
param = tk.LabelFrame(window, text="params", padx=10, pady=10)
param.grid(column=0, row=10, sticky='W', padx= 10)
all_vars = [tk.IntVar() for _ in range(4)] #create 4 IntVars in one go
for i in all_vars : #set all vars to 0
i.set(0)
lin_cb = tk.Checkbutton(models, text="linear regression",variable=all_vars[0]) #set variable for each checkbutton
lin_cb.grid(column=0, row=2, sticky='W')
nlin_cb = tk.Checkbutton(models, text="non-linear regression",variable=all_vars[1])
nlin_cb.grid(column=0, row=5, sticky='W')
tk.Label(param, text="substate").grid(row=1, sticky='W')
tk.Label(param, text="velocity").grid(row=2, sticky='W')
tk.Label(param, text="if inhibited").grid(row=3, sticky='W')
tk.Label(param, text="inibitor").grid(row=4, sticky='W')
su_M=tk.Checkbutton(param, text='M',variable=all_vars[2])
su_M.grid(column=1, row=1, sticky='W')
su_mM=tk.Checkbutton(param, text='mM',variable=all_vars[3])
su_mM.grid(column=2, row=1, sticky='W')
window.mainloop()
推荐阅读
- python - 我们可以让 Selenium 专注于打开的浏览器窗口吗?
- kubernetes - ConfigMap 卷未与密钥一起安装为卷
- google-ads-api - 为什么我在 Google Ads 中尝试创建新的转化操作时收到“当前客户不允许操作”?
- .htaccess - 如何更改 .htaccess 以接受阿拉伯语?
- javascript - 来自非活动选项卡中视频元素的 CanvasRenderingContext2D drawImage
- go - 指针接收器与值的方法,值和指针之间的转换
- java - 不清楚 driver.getWindowHandles() 和 driver.getWindowHandle()
- python - Pandas 从在 python 中具有多个值的单元格创建新行
- flutter - 我如何更改图标按钮中的图标
- python - 没有名为“服务”的模块