由于config.ini的值,我如何检查Tkinter中的Checkbutton 从解析Config我收到1或0
def show_config():
config = switcher.config_read()
setting = Toplevel(root)
setting.title = 'Setting Change'
setting.geometry('320x620')
top = Frame(setting)
top.pack(side=TOP)
sections1 = Label(top, text='section1')
sections1.pack()
btn1= IntVar(value=1)
btn2= IntVar()
btn2.set(1)
btn1_check = Checkbutton(top, text='btn1', variable=btn1)
btn2_check = Checkbutton(top, text='btn1', variable=btn2)
btn1_check.pack(side=LEFT)
btn2_check.pack(side=LEFT)
我尝试了btn1= IntVar(value=1)
和btn2.set(1)
未选中Checkbutton
答案 0 :(得分:0)
我建议您使用可IntVar()
/ BooleanVar()
或True
/ False
的{{1}},而不是使用基本上可以包含任何整数值的1
分别为0
。在变量上调用.set()
会将其值修改为传递的值。以下代码段显示使用BooleanVar()
的“直接”方法和使用模拟配置文件(.set(True)
的间接方法)设置dict
:
from tkinter import *
def read_config(file_name):
# read config from file system
# return statement needs to be modified to own needs
return {'check_btn_var': 1}
config = read_config('<file_name>')
master = Tk()
# use config from config file for checkbutton cb1
var1 = BooleanVar()
var1.set(config.get('check_btn_var'))
cb1 = Checkbutton(master, text="Checkbutton", variable=var1)
cb1.pack()
# use hard coded value for checkbutton cb2
var2 = BooleanVar()
var2.set(True)
cb2 = Checkbutton(master, text="Checkbutton", variable=var2)
cb2.pack()
mainloop()
答案 1 :(得分:0)
问题来自收集垃圾的函数的范围。
以下代码无效:
import tkinter as tk
root = tk.Tk()
def show_config():
check = tk.IntVar(value=1)
checkbox = tk.Checkbutton(root, text="check", variable=check)
checkbox.pack()
show_config()
root.mainloop()
这个可以获得你的配置设置的值:
import tkinter as tk
root = tk.Tk()
check = tk.IntVar(value=1)
checkbox = tk.Checkbutton(root, text="check", variable=check)
checkbox.pack()
root.mainloop()
如果使用类,可以很容易地保留变量(使用self.btn1
),否则可能会使用全局变量。
可能的解决方法:
import tkinter as tk
root = tk.Tk()
check=None
def show_config():
global check
check = tk.IntVar(value=1)
checkbox = tk.Checkbutton(root, text="check", variable=check)
checkbox.pack()
show_config()
root.mainloop()