【发布时间】:2015-08-19 04:46:44
【问题描述】:
我是 python 的初学者,我正在尝试创建一个类似于记分牌的 GUI。我做了一个事件,根据 Combobox 选择通过按钮修改我的统计信息。在小部件的代码之后有 4 个非常小的函数,第一个按预期工作,其他 3 个类似但它们只影响最后 3 个标签而不是 Combobox 选择标签。我在那里想念什么?
from Tkinter import *
import ttk
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master, relief="sunken", border=1)
self.master = master
self.box_list = []
self.labels = []
self.radiobuttons = []
self.winlabels = []
self.loselabels = []
self.drawlabels = []
self.create_widgets()
self.grid()
def create_widgets(self):
for i in range(9):
box = ttk.Combobox(self, state="readonly")
box.grid(row=1+i, column=2)
box["values"] = ("team A", "team B", "team C", "team D", "team E", "team F", "team G", "team H", "team I")
box.current(i)
self.box_list.append(box)
box.bind("<<ComboboxSelected>>")
for i in range(9):
sv = 1
selection = i
radiobutton = Radiobutton(self, value=selection, text=selection+1, variable=sv,
command=lambda i=i: self.rcr(i))
radiobutton.grid(row=1+i, column=0)
self.radiobuttons.append(radiobutton)
self.headings = ("Classes", "Win Lose Draw", "Declare Result!")
for i in range(3):
label = Label(self, text=self.headings, relief="sunken")
label["text"] = self.headings[i]
label.grid(row=0, column=i*3+1, columnspan=3, sticky=E+W+N+S)
for i in range(9):
stats = Label(self, relief="sunken")
stats["text"] = 0
stats.grid(row=1+i, column=4, sticky=E+W+N+S)
self.winlabels.append(stats)
for i in range(9):
stats = Label(self, relief="sunken")
stats["text"] = 0
stats.grid(row=1+i, column=5, sticky=E+W+N+S)
self.loselabels.append(stats)
for i in range(9):
stats = Label(self, relief="sunken")
stats["text"] = 0
stats.grid(row=1+i, column=6, sticky=E+W+N+S)
self.drawlabels.append(stats)
buttonwin = Button(self, text="Win", bg="green", command=lambda i=i: self.win(i))
buttonwin.grid(row=1, column=7, pady=1, padx=1, rowspan=3, columnspan=3, sticky=E+W+N+S)
buttonlose = Button(self, text="Lose", bg="red", command=lambda i=i: self.lose(i))
buttonlose.grid(row=4, column=7, pady=1, padx=1, rowspan=3, columnspan=3, sticky=E+W+N+S)
buttondraw = Button(self, text="Draw", bg="white", command=lambda i=i: self.draw(i))
buttondraw.grid(row=7, column=7, pady=1, padx=1, rowspan=3, columnspan=3, sticky=E+W+N+S)
def rcr(self, i):
tr = self.radiobuttons[i]["text"]
print tr
def win(self, i):
self.winlabels[i]["text"] += 1
def lose(self, i):
self.loselabels[i]["text"] += 1
def draw(self,i):
self.drawlabels[i]["text"] += 1
root = Tk()
root.title("Stats Tracker")
root.geometry("500x250")
app = Application(root)
root.mainloop()
【问题讨论】:
-
你需要比 - not working 更具体。
-
你的命名空间在哪里?检查这个:stackoverflow.com/questions/32026492/…
标签: python inheritance syntax reference tkinter