我正在创建一个记分篮球计划。我有一些带有类的不同文件,什么不是。我的主要问题是尝试更新每个玩家的得分。
例如:
我在屏幕上设置了一个按钮;
pointsButton = Button(root, text='1PT', command=addPoint)
pointsButton.grid(row=0, column=1)
旁边有一个标签,该标签调用特定玩家的得分(据称)。
plabel = Label(root, text=(str(p.points)), relief='groove', bg='#41B6E6', fg = '#DB3EB1', padx=numX, pady=numY)
plabel.grid(row=rowNumber, column=4)
以下是我的播放器类中的代码,可能是理解我的问题所需要的。
class BasketballPlayer:
#Constructor
def __init__(self , preName, lastName, jerseyNumber):
self.preName = preName
self.lastName = lastName
self.jerseyNumber = jerseyNumber
self.points = 0
self.assists = 0
self.rebounds = 0
self.steals = 0
self.blocks = 0
self.fouls = 0
self.threePointers = 0
self.careerHighPoints = 0
self.careerHighAssists = 0
self.careerHighRebounds = 0
self.careerHighSteals = 0
self.careerHighBlocks = 0
self.careerHighThreePointers = 0
以及该类中的几个函数:
def addPoints(self, p):
self.points += p
def incrementOnePoint(self):
self.points += 1
def getPoints(self):
return self.points
这是我尝试过的几个功能。
def addPoint():
p.incrementOnePoint()
plabel.config(text=p.points)
或者:
def addPoint():
p.addPoints(1)
plabel.config(text=p.points)
我真的以为它将自动更新,因为我向变量添加了整数,但根本没有更新。
这里是评论中要求的最小可复制示例。
from tkinter import *
root = Tk()
class bballPlayer:
def __init__(self):
self.points = 0
def incrementOnePoint(self):
self.points += 1
def getPoints(self):
return self.points
def addOnePoint():
p.incrementOnePoint
global pointslabel
pointslabel.config(text=str(p.points))
p = bballPlayer()
pointslabel = Label(root, text=str(p.points))
pointslabel.grid(row=0, column=1)
btn = Button(root, text='Add Point', command=addOnePoint)
btn.grid(row=0, column=0)
root.mainloop()
答案 0 :(得分:1)
嗯,现在我看到了问题,您的代码不是调用 incrementOnePoint()
方法(仅引用其名称)。
def addOnePoint():
p.incrementOnePoint() # ADD MISSING PARENTHESES TO END.
global pointslabel # NOT STRICTLY NECESSARY BTW.
pointslabel.config(text=str(p.points))