Mar*_*c43 1 python tkinter button
我想用一个按钮改变一个变量的值,我不想像这样创建一个新的整个函数:
from Tkinter import *
variable = 1
def makeSomething():
global variable
variable = 2
root = Tk()
myButton = Button(root, text='Press me',command=makeSomething).pack()
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?(我需要为六个按钮做这个,制作六个功能不是一个选项)
我需要为6个按钮做这个...
如果每个按钮修改相同的全局变量,则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
Run Code Online (Sandbox Code Playgroud)
如果每个按钮修改不同的全局,则将所有全局变量压缩为单个全局变量,然后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
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,您仍然只需要一个功能.
顺便说一下,不要这样做:
myButton = Button(root).pack()
Run Code Online (Sandbox Code Playgroud)
这会将结果分配pack()
给myButton,因此myButton将None
代替引用您的按钮.相反,做:
myButton = Button(root)
myButton.pack()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17221 次 |
最近记录: |