10

我正在尝试使用 python 和 tkinter 制作一个运行已在复选框中选中的程序的程序。

import sys
from tkinter import *
import tkinter.messagebox
def runSelectedItems():
    if checkCmd == 0:
        labelText = Label(text="It worked").pack()
    else:
        labelText = Label(text="Please select an item from the checklist below").pack()

checkBox1 = Checkbutton(mGui, variable=checkCmd, onvalue=1, offvalue=0, text="Command  Prompt").pack()
buttonCmd = Button(mGui, text="Run Checked Items", command=runSelectedItems).pack()

那是代码,但我不明白为什么它不起作用?

谢谢。

4

1 回答 1

16

您需要使用一个IntVar变量:

checkCmd = IntVar()
checkCmd.set(0)
def runSelectedItems():
    if checkCmd.get() == 0:
        labelText = Label(text="It worked").pack()
    else:
        labelText = Label(text="Please select an item from the checklist below").pack()

checkBox1 = Checkbutton(mGui, variable=checkCmd, onvalue=1, offvalue=0, text="Command  Prompt").pack()
buttonCmd = Button(mGui, text="Run Checked Items", command=runSelectedItems).pack()

在其他新闻中,成语:

widget = TkinterWidget(...).pack()

不是一个很好的。在这种情况下,widget始终是None,因为那是Widget.pack(). 通常,您应该通过 2 个单独的步骤创建小部件并使其了解几何管理器。例如:

checkBox1 = Checkbutton(mGui, variable=checkCmd, onvalue=1, offvalue=0, text="Command  Prompt")
checkBox1.pack()
于 2013-04-29T17:56:24.297 回答