-1

嘿,所以我正在制作一个程序,它在主窗口上有一个复选按钮,而顶层窗口也有一个复选按钮。问题是,由于某种原因,顶级检查按钮会影响主检查按钮的状态,或者主检查按钮模仿顶级一(如果您选中/取消选中顶级一,主要检查/取消选中)。这是显示问题的示例代码:

import tkinter as tk

def toplevel():
    top = tk.Toplevel()
    top.geometry('200x50')

    top_chekbutton = tk.Checkbutton(top, text='top')

    top_chekbutton.pack()

    top.mainloop()

main = tk.Tk()
main.geometry('200x50')

open_top = tk.Button(main, text='open top', command=toplevel)

main_checkbutton = tk.Checkbutton(main, text='main')

main_checkbutton.pack()
open_top.pack()

main.mainloop()

我没有定义状态变量,因为它们似乎不是问题的根源。我在 win10 上使用 python 3.7.7 和 tkinter 8.6。请帮助:(

4

1 回答 1

0

作为一般的经验法则,每个实例都Checkbutton应该有一个与之关联的变量。如果您不这样做,将使用对所有Checkbuttons. 共享相同变量的所有小部件将显示相同的值。

您可以通过打印top_chekbutton.cget("variable")和的值自己验证这一点main_checkbutton.cget("variable")。在这两种情况下,值都是“!checkbutton”(至少,对于我正在使用的python版本)。

因此,为您的复选按钮分配一个变量,例如 a BooleanVarIntVarStringVar

main_var = tk.BooleanVar(value=False)
main_checkbutton = tk.Checkbutton(main, text='main')
于 2020-05-26T05:09:50.647 回答