【发布时间】:2019-03-13 11:42:20
【问题描述】:
我正在尝试编写一个宾果网格程序,并希望减少我的代码以使其更简单。我目前正在重复此代码:
from tkinter import *
from tkinter import Tk, Button, Label
mycolor = '#FF7F50'
mycolor2 = '#FFFFFF'
mycolor3 = '#BAF0FF'
class Window:
def __init__(self, master):
self.master = master
self.master.title("Bingo")
self.master.minsize(width=1920, height=1080)
self.master.config(bg=mycolor3)
self.A = Button(master, text='1', font=('Helvetica', '23'), height=1, width=20, command=self.toggleA, bg=mycolor2)
self.A.grid(column=0,row=1)
self.B = Button(master, text='2', font=('Helvetica', '23'), height=1, width=20, command=self.toggleB, bg=mycolor2)
self.B.grid(column=0,row=2)
def toggleA(self):
self.A.config('bg')
if self.A.config('bg')[-1] == mycolor2:
self.A.config(bg=mycolor)
else:
self.A.config(bg=mycolor2)
def toggleB(self):
self.B.config('bg')
if self.B.config('bg')[-1] == mycolor2:
self.B.config(bg=mycolor)
else:
self.B.config(bg=mycolor2)
root = Tk()
my_win = Window(root)
root.mainloop()
并且准确地使用它,我必须通过更改变量名称来重复这个脚本 75 次以完成程序,这是有效的,但我想知道是否有一种方法可以为每个相反的按钮定义相同的切换为每个按钮定义一个新的切换?切换用于影响按钮的颜色,将其从一种颜色切换到另一种颜色,我不确定如何让所有按钮调用相同的命令以单独影响每个按钮。 谢谢!
【问题讨论】:
-
你说你在重复这段代码;你能展示一个重复,这样我们就可以看到你在每次重复中改变了什么? (PS:欢迎来到 StackOverflow!??????)
-
定义一个实例可调用的
Toggle类(即定义一个__call__()方法),然后创建它们的列表。然后,您可以在当前使用toggleA、toggleB等的任何位置使用列表元素。 -
创建一个类或使用forloop
-
DDC208:请在您的问题中添加更多代码...理想情况下是一个最小但可运行的示例,它具有您的代码似乎正在定义的完整类。
-
@thesonyman101:应该创建一个类和使用
for循环。
标签: python python-3.x button tkinter togglebutton