繁体   English   中英

填充时Tkinter检查按钮的干扰

[英]Tkinter checkbutton interferences when filling in

我正在用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 ,您需要创建Checkbutton变量并将其与每个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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM