【问题标题】:check box, when i tick the box the value of var does not change to 1复选框,当我勾选该框时 var 的值不会更改为 1
【发布时间】:2017-04-16 05:32:34
【问题描述】:

当我单击复选框时,我希望 var1 的值更改为 1。但是,当我在函数中执行 var1.get() 时,值始终显示为 0。

var1 = IntVar()
tickbox_1 = Checkbutton(custom, text=label_1, variable=var1,)
tickbox_1.grid(row=2,column=1)

我有一个由按钮调用的函数,该函数获取var1 的值并打印出来。

def custom_create():
     print(var1.get())

我可以做些什么来确保var1 在选中该框时变为 1?另外,如何在窗口启动时勾选该框?

【问题讨论】:

标签: python variables checkbox tkinter


【解决方案1】:

您的代码基本正确,因此您的问题的原因一定是您未向我们展示的其他代码。

FWIW,这是一个小型的工作演示。

import tkinter as tk

root = tk.Tk()

var1 = tk.IntVar()
var1.set(1)

tickbox_1 = tk.Checkbutton(root, text='Tick_1', variable=var1)
tickbox_1.grid(row=0, column=0)

def callback():
    print(var1.get())

b = tk.Button(root, text="Show", command=callback)
b.grid(row=0, column=1)

root.mainloop()

var1.set(1) 行使 Checkbox 以勾选状态开始。

【讨论】:

  • 当我 var1.set(1) 时,第一个勾选框的值确实显示为 1 但该框仍未勾选。代码和我展示的一样,所以我不太确定问题出在哪里......
  • @DominikPraski 我只能建议您创建一个minimal reproducible example 来重现您的问题并将其添加到问题的末尾。我明天去看看(在我的时区已经很晚了),或者其他人可能会在此期间帮助你。
【解决方案2】:

我想我找到了程序所在的位置,我的程序有很多窗口,并且复选框不在主窗口(根)中。我希望它们在这个辅助窗口中,并且在第二个窗口中的值不会改变。

from tkinter import *

root = Tk()


def open_custom_gui():
    custom_gui()



b = Button(root,command=open_custom_gui)
b.grid(row=1,column=0)

def custom_gui():

    def getinfo():
        print(var1.get())

    custom= Tk()




    var1 = IntVar()

    tickbox_1 = Checkbutton(custom,text='TEST',
                                    variable=var1,)
    tickbox_1.grid(row=0,column=0)


    b = Button(custom,command=getinfo)
    b.grid(row=1,column=0)



    custom.mainloop()

root.mainloop()

【讨论】:

  • 这似乎不是一个答案。请不要试图通过发布信息来更新您的问题,就像它是一个答案一样。
  • 布莱恩所说的。将此代码移至现有问题的末尾,或提出新问题。顺便说一句,您应该永远在 Tkinter 程序中两次调用 Tk().mainloop()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 2014-08-04
  • 1970-01-01
  • 2010-12-15
  • 2014-07-21
  • 2014-05-10
  • 2013-04-03
相关资源
最近更新 更多