用按钮更改变量的值(Tkinter)

2024-04-30 01:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想用一个按钮改变一个变量的值,我不想像这样创建一个新的整个函数:

from Tkinter import *
variable = 1
def makeSomething():
    global variable
    variable = 2
root = Tk()
myButton = Button(root, text='Press me',command=makeSomething).pack()

我该怎么做? (我需要为六个按钮这样做,使六个功能不是一个选项)


Tags: 函数textfromimporttkinterdefbuttonroot
1条回答
网友
1楼 · 发布于 2024-04-30 01:21:52

i need to make this for 6 buttons...

如果每个按钮修改相同的全局变量,则让makeSomething接受一个value参数:

from Tkinter import *
variable = 1
def makeSomething(value):
    global variable
    variable = value
root = Tk()
Button(root, text='Set value to four',command=lambda *args: makeSomething(4)).pack()
Button(root, text='Set value to eight',command=lambda *args: makeSomething(8)).pack()
Button(root, text='Set value to fifteen',command=lambda *args: makeSomething(15)).pack()
#...etc

如果每个按钮修改不同的全局,那么将所有全局压缩为一个全局dict,然后makeSomething可以对其进行修改。

from Tkinter import *
settings = {"foo": 1, "bar": 1, "baz": 1}

def makeSomething(name):
    settings[name] = 2

root = Tk()
Button(root, text='Set foo',command=lambda *args: makeSomething("foo")).pack()
Button(root, text='Set bar',command=lambda *args: makeSomething("bar")).pack()
Button(root, text='Set baz',command=lambda *args: makeSomething("baz")).pack()
#...etc

无论哪种情况,您仍然只需要一个函数。


顺便说一下,不要这样做:

myButton = Button(root).pack()

这会将pack()的结果分配给myButton,因此myButton将是None,而不是引用您的按钮。相反,请:

myButton = Button(root)
myButton.pack()

相关问题 更多 >