【问题标题】:Tkinter buttons commands don't runTkinter 按钮命令不运行
【发布时间】:2019-05-10 04:35:06
【问题描述】:

我想编写一个程序,我需要按钮来返回一个整数。所以我的想法是创建一个可以改变的局部变量。

问题是,全局变量值不知何故未定义。

也许有人可以帮助我?谢谢!!

def nb_1():
    global value
    value=1

def nb_2():
    global value
    value=2

def valueNumber():
    global value
    
    b1=Button(frame_output, text='1', command=nb_1)
    b1.pack(side=LEFT)

    b2=Button(frame_output, text='2', command=nb_2)
    b2.pack(side=LEFT)

    x=value
    return x
    
print (valueNumber())

【问题讨论】:

  • 只需在程序顶部的某个位置(任何函数之外)定义它
  • 但是值不会改变:/

标签: python button tkinter global-variables


【解决方案1】:

首先你需要在你的函数之外定义你的全局变量value。同样,valueNumber() 所做的只是创建按钮并且不要调用命令 nb_1 和 nb_2,而只是将它们分配为按钮命令。所以返回值将是您首先分配给value 的值,这里是0

如果您想在每次更改值时通过单击此函数中的按钮打印值来打印值,像这样

from tkinter import Button, Tk, LEFT

frame_output = Tk()

def nb_1():
    global value
    value=1
    print(value)

def nb_2():
    global value
    value=2
    print(value)

def valueNumber():
    global value

    b1=Button(frame_output, text='1', command=nb_1)
    b1.pack(side=LEFT)

    b2=Button(frame_output, text='2', command=nb_2)
    b2.pack(side=LEFT)

    x=value
    return x

value = 0
valueNumber()

frame_output.mainloop()

【讨论】:

  • 感谢您的帮助。我试过这个,但我不想打印价值,我只想退货。程序的下一步是一个新函数,它需要 valueNumber 函数的返回值。如果我像你说的那样做,如果我做 print(valueNumber),输出总是 0。
  • 这是因为在将value设置为0后立即调用它,如果在调用nb_1nb_2后调用valueNumber,返回值valueNumber将是 1 或 2。
  • 啊,好吧!当我点击按钮时是否有可能获得返回值?
  • 我不确定您要达到什么目的,但由于 value 是全局变量,您无需从任何函数返回即可访问它。
  • 好的,对不起,我会尽力解释。实际上,在我的 valueNumer 函数中,我有很多 if 条件。我刚刚写了其中一个。所以每个条件都会返回另一个值,所以如果这个条件可以返回一个值,这将是很好的,这取决于按下哪个按钮,因为否则我必须更改所有内容。或者是否可以通过点击按钮而不使用函数来设置变量?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 2014-01-10
  • 2011-04-11
  • 2021-04-14
  • 2023-02-24
相关资源
最近更新 更多