尝试获取单个按钮以更新tkinter中的单个标签。
这是我的代码:
from tkinter import *
root = Tk()
class bballPlayer:
def __init__(self, preName, lastName):
self.preName = preName
self.lastName = lastName
self.points = 0
def incrementOnePoint(self):
self.points += 1
def getPoints(self):
return self.points
players = []
player = bballPlayer('Tyler','Herro')
players.append(player)
player = bballPlayer('Duncan','Robinson')
players.append(player)
player = bballPlayer('Jimmy','Buckets')
players.append(player)
def addOnePoint():
p.incrementOnePoint()
global pointslabel
pointslabel.config(text=str(p.points))
rowNumber = 0
for p in players:
pointslabel = Label(root, text=str(p.points))
pointslabel.grid(row=rowNumber, column=1)
rowNumber += 1
rowNumber = 0
for p in players:
btn = Button(root, text='Add Point', command=addOnePoint)
btn.grid(row=rowNumber, column=0)
rowNumber += 1
root.mainloop()
运行代码时,一列中有三个按钮,下一列中的三个标签旁边。我想做的就是获取它,以便每个按钮都更改它旁边的标签。
运行代码时会发生什么情况,就是每个按钮都会修改最后一个标签,而其余两个标签都没有被修改。
任何帮助都很棒,谢谢!
答案 0 :(得分:0)
这将为您工作。我认为您不了解按钮的工作方式。一旦使用.grid()它们就在那里了,但是当您创建一个具有相同名称的按钮时,您将失去对第一个按钮的引用。通过创建关联数组,您可以访问该按钮。您缺少的另一部分是,您必须将一些内容传递给回调函数,以使其知道您要转到哪个播放器。
from tkinter import *
from functools import partial
root = Tk()
class bballPlayer:
def __init__(self, preName, lastName):
self.preName = preName
self.lastName = lastName
self.points = 0
def incrementOnePoint(self):
self.points += 1
def getPoints(self):
return self.points
players = []
player = bballPlayer('Tyler', 'Herro')
players.append(player)
player = bballPlayer('Duncan', 'Robinson')
players.append(player)
player = bballPlayer('Jimmy', 'Buckets')
players.append(player)
def addOnePoint(num):
global points_labels
players[num].incrementOnePoint()
points_labels[num].config(text=str(players[num].points))
points_buttons = []
points_labels = []
for x in range(len(players)):
points_buttons.append(Button(root, text='Add Point', command=partial(addOnePoint, x)))
points_buttons[x].grid(row=x, column=0)
points_labels.append(Label(root, text=str(players[x].points)))
points_labels[x].grid(row=x, column=1)
root.mainloop()