使用按钮更新标签变量

2024-07-03 07:59:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个记分篮球程序。我有几个不同的文件,有类什么的。我的主要问题是试图更新每个球员的分数

例如:

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

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)

这是我的player类中的代码,可能是理解我的问题所需要的

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

Tags: textselfdefcolumnrootpointsgridrow
1条回答
网友
1楼 · 发布于 2024-07-03 07:59:41

啊,现在我明白了问题所在,您的代码没有调用incrementOnePoint()方法(只引用它的名称)

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

相关问题 更多 >