tkk 勾选按钮在加载时出现黑框

Ab *_*ett 6 python checkbox state appearance tkinter

我创建了一个复选按钮/框,具有以下调用

x=ttk.Checkbutton(tab1,state='disabled',command = lambda j=i,x=k: fCheckButton(j,x))
x.state(['selected'])
Run Code Online (Sandbox Code Playgroud)

该框看起来很好并且被选中,但是它在加载时出现,其中有一个黑框,这似乎与它的状态无关。

我一直在寻找原因,但实际上找不到任何有同样问题的人。

谢谢

小智 6

我在类中创建 Checkbutton 对象时遇到了这个问题。我在类中声明了一个局部变量而不是成员变量。局部变量超出范围,导致复选框值不是 0 或 1。

错误的:

    import tkinter as Tk
    from tkinter import IntVar
    from tkinter.ttk import Frame, Checkbutton
    class TestGui(Frame):
        def __init__(self, parent):
            Frame.__init__(self, parent)

            var1 = IntVar()
            var1.set(1)
            button = Checkbutton(parent,
                text="Pick me, pick me!",
                variable=var1)
            button.grid()

    root = Tk.Tk()
    app = TestGui(root)
    root.mainloop()
Run Code Online (Sandbox Code Playgroud)

固定的:

import tkinter as Tk
from tkinter import IntVar
from tkinter.ttk import Frame, Checkbutton
class TestGui(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.var1 = IntVar()
        self.var1.set(1)
        button = Checkbutton(parent,
            text="Pick me, pick me!",
            variable=self.var1)        # note difference here
        button.grid()

root = Tk.Tk()
app = TestGui(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)


Jos*_*lin 4

我在 Windows 7 上也遇到过类似的问题。

加载应用程序后,我的一个复选按钮包含一个实心方块。但点击后,它变成了一个正常的复选按钮:

在此输入图像描述

就我而言,这是因为我有多个复选按钮共享同一变量...Tk.IntVar()为每个复选按钮创建单独的变量后,问题就消失了。

import Tkinter as Tk
import ttk

root = Tk.Tk()

checkVar = Tk.IntVar()
x = ttk.Checkbutton(root, variable=checkVar, text="check 1")
x.pack()

checkVar2 = Tk.IntVar()
y = ttk.Checkbutton(root, variable=checkVar2, text="check 2")
y.pack()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)