【问题标题】:Tkinter checkbutton interferences when filling in填写时 Tkinter 检查按钮干扰
【发布时间】:2019-08-19 09:55:15
【问题描述】:

我正在制作一个 g.u.i。与 tkinter。我目前正在尝试制作几个带有几个复选按钮的标签框。问题是一个检查按钮在一个窗口中被交叉,而另一个窗口中的另一个也被交叉。

我一直在寻找类似的问题,但没有找到。作为一个初学者,我真的不明白问题出在哪里。

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()

在继续程序从交叉的复选按钮中提取信息之前,我必须了解如何解决这个问题。谢谢大家。我希望我给了你所有必要的信息。我尽量把代码总结一下。

【问题讨论】:

    标签: python user-interface tkinter


    【解决方案1】:

    要使用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()
    

    【讨论】:

      猜你喜欢
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      相关资源
      最近更新 更多