【问题标题】:if else, button not working否则,按钮不起作用
【发布时间】:2016-05-14 13:58:02
【问题描述】:

尝试更改按钮文本。如果按钮具有 LBS,则单击该按钮应将其更改为 KGS。如果按钮有 KGS,则单击按钮应将其更改为 LBS。

按钮什么也没做,但代码对我来说似乎是正确的。

from Tkinter import *

myGui=Tk()
myGui.geometry("200x100")
myGui.title("basicGUI")
myGui.configure(bg="gray")

def toggle():
    text = "LBS"
    if text == LBS:
        tglBtn.config(text = KGS)
    else:
        tglBtn.config(text = LBS)

LBS = StringVar
tglBtn = Button(text="LBS",
                textvariable=LBS,
                command=toggle)
tglBtn.pack()

mainloop()

【问题讨论】:

  • 每次运行函数时都将text 设置为"LBS",所以它总是做同样的事情。您可能想读取按钮上的文本,或者更好的是,将其存储为 True/False 变量,然后根据值设置文本。
  • 不知道你在对我说什么。我对python很陌生,我需要一个更好的线索。

标签: python python-2.7 tkinter


【解决方案1】:

除非您添加括号:LBS = StringVar(),否则您不会创建 StringVar 对象。该名称也具有误导性,因为StringVar 将是“LBS”或“KGS”。 StringVar 的全部意义在于,每当 StringVar 更改其值时,按钮的文本都会自动更新。

from Tkinter import *

myGui=Tk()
myGui.geometry("200x100")
myGui.title("basicGUI")
myGui.configure(bg="gray")

def toggle():
    if buttonText.get() == "LBS":
        buttonText.set("KGS")
    else:
        buttonText.set("LBS")

buttonText = StringVar()
buttonText.set("LBS")      # you can't do StringVar("LBS")
tglBtn = Button(textvariable=buttonText,
                command=toggle)
tglBtn.pack()

mainloop()

【讨论】:

  • 非常感谢,很高兴看到其他解决方案。再次感谢
  • 使用您的代码后,我觉得这是最好的答案,它帮助我了解了如何使用 StringVar、.set 和 .get ...对不起,我没有标记您的最好的,但我今天改变了它。我也喜欢另一个答案。谢谢贾斯珀
  • 这确实是更好的答案,因为它使用了更多的 tkinter 功能,其他解决方案更简单,但希望更容易理解。
【解决方案2】:

在您的text == LBS 行中,您正在比较string (text) 和变量实例(LBS,这是一个StringVar)。您要么比较 textLBS.get(),要么直接比较字符串,如下例所示。


from Tkinter import *

myGui=Tk()
myGui.geometry("200x100")
myGui.title("basicGUI")
myGui.configure(bg="gray")

def toggle():
    text = tglBtn.cget("text")
    if text == "LBS":
        tglBtn.config(text = "KGS")
    else:
        tglBtn.config(text = "LBS")

tglBtn = Button(text="LBS", command=toggle)
tglBtn.pack()

mainloop()

【讨论】:

  • 太棒了!!!是的,我知道我没有正确处理文本,但不知道如何让函数读取它。你是一个优秀的 py 程序员,这样一个干净的解决方案。谢谢
  • 使用.get(),您将立即获得所有配置选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 2021-11-20
  • 2011-12-02
相关资源
最近更新 更多