由于config.ini值Tkinter,选择Checkbutton

时间:2017-07-28 20:56:18

标签: python tkinter

由于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

2 个答案:

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