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

Python 用按钮(Tkinter)更改变量的值,python,button,tkinter,Python,Button,Tkinter,我只想用一个按钮更改变量的值,我不想创建一个新的完整函数,就像这样: from Tkinter import * variable = 1 def makeSomething(): global variable variable = 2 root = Tk() myButton = Button(root, text='Press me',command=makeSomething).pack() 我怎么能做到? (我需要为六个按钮设置六个功能,这不是一个选项) 我需要做6个

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

from Tkinter import *
variable = 1
def makeSomething():
    global variable
    variable = 2
root = Tk()
myButton = Button(root, text='Press me',command=makeSomething).pack()
我怎么能做到? (我需要为六个按钮设置六个功能,这不是一个选项)

我需要做6个按钮

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

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
如果每个按钮修改不同的全局命令,那么将所有全局命令压缩为单个全局命令,
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()
更新: 我的工作(几乎)很好 这段代码可以工作,但我想实时显示 当我取消注释这两件事时,它不再做任何事情

def BotPlay_按钮():
nPlay=entryN.get()
jlist=[jouer(File1,True,File1),jouer(File2,True,File1)]
Partie=Partie_对象(jlist)
对于范围内的i(int(nPlay)):
玩Partie(Partie)
xList.append(i)
y1List.append(bot1.score)
y2List.append(bot2.score)
#windo.update_idletasks()
#windo.update()

我是初学者,但我认为应该为函数提供两个参数,一个用于变量名,另一个用于it值,如下所示

def makeSomething(variableName,variableValue)
    variableName = variableValue

但正如我所说,我是一个初学者,所以我可能错了

为什么不呢?只有三行。只有三行,但如果我需要为6个按钮做这个…那么你应该在问题中写下,你必须为6个按钮做这个。它需要不同的答案。我认为答案是一样的,我只想少做点工作:/对于2个按钮,我会做
复制/粘贴
,对于更多按钮,我不会做
复制/粘贴
-所以信息
6个按钮
更改答案。欢迎使用so!请务必按照要求提问。您应该把问题说得更清楚。@JacoSolari这是一个答案。您好,R3GUL4R,您的函数实际上是用
variableName
的值替换
variableValue
的值。这两个变量,
variableName
variableValue
实际上都是变量本身。您好,您忘记了函数定义后的冒号。