使用按钮更新标签变量

时间:2020-08-08 22:15:02

标签: python user-interface button tkinter

我正在创建一个记分篮球计划。我有一些带有类的不同文件,什么不是。我的主要问题是尝试更新每个玩家的得分。

例如:

我在屏幕上设置了一个按钮;

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()

1 个答案:

答案 0 :(得分:1)

嗯,现在我看到了问题,您的代码不是调用 incrementOnePoint()方法(仅引用其名称)。

def addOnePoint():
    p.incrementOnePoint()  # ADD MISSING PARENTHESES TO END.
    global pointslabel  # NOT STRICTLY NECESSARY BTW.
    pointslabel.config(text=str(p.points))