簡體   English   中英

更新python tkinter標簽

[英]Updating python tkinter Labels

from tkinter import *
import time

master = Tk()

def uiPrint():
    print("")
    print(click)


click = 0
mult = 1
clickView = click

def doubClicks():
    global click
    global mult
    if click < 5:
        print("Not enough clicks!")
    elif click >= 5:
        mult = mult*2
        click = click - 5
        print("Double Clicks Purchased!")

def buttonCommand():
    clickView = IntVar()
    Label(master, textvariable =clickView).pack()
    clickView.get()
    global click
    global mult
    click += 1*(mult)
    uiPrint()

mainClickButton = Button(master, text="Click!", command = buttonCommand)
mainClickButton.pack()

purchaseDoubleClickButton = Button(master, text="Purchase Double Clicks", command = doubClicks)
purchaseDoubleClickButton.pack()


master.title("Clicker")
master.geometry("%sx%s+%s+%s" % (200,70,512,512))
mainloop()

問題:

tkinter窗口上的標簽會告訴您,您的點擊次數保持為0,不會更新。 問題是什么? 可能遺漏了一些明顯的東西

我認為您應該更新IntVar的同一實例以更新內容。您應該做的是在主程序中創建IntVar,並在buttonCommand()函數內部將其用作全局變量:

def buttonCommand():    
    global click
    global mult
    global clickView
    click += 1*(mult)
    clickView.set(click)
    uiPrint()

mainClickButton = Button(master, text="Click!", command = buttonCommand)
mainClickButton.pack()

purchaseDoubleClickButton = Button(master, text="Purchase Double Clicks", command = doubClicks)
purchaseDoubleClickButton.pack()

clickView = IntVar()
clickView.set(click)
Label(master, textvariable = clickView).pack()    

編輯:要在購買雙擊時更新標簽,請對“ doubleClicks”功能使用相同的方法:

def doubClicks():
    global click
    global mult
    global clickView
    if click < 5:
        print("Not enough clicks!")
    elif click >= 5:
        mult = mult*2
        click = click - 5
        print("Double Clicks Purchased!")
    clickView.set(click)

另一種方法是使用OOP,因此創建一個“ clicker”類而不是使用globals:

from Tkinter import *

class Clicker():
    def __init__(self, master):            
        self.click = 0
        self.mult = 1
        self.clickView = StringVar() 
        self.clickView.set(self.click)

        self.mainClickButton = Button(master, text="Click!", command =  self.buttonCommand)
        self.mainClickButton.pack()

        self.purchaseDoubleClickButton = Button(master, text="Purchase Double Clicks", command = self.doubClicks)
        self.purchaseDoubleClickButton.pack()

        Label(master, textvariable = self.clickView).pack()


    def uiPrint(self):
        print("")
        print(self.click)

    def doubClicks(self):
        if self.click < 5:
            print("Not enough clicks!")
        elif self.click >= 5:
            self.mult = self.mult*2
            self.click = self.click - 5
            print("Double Clicks Purchased!")
            self.clickView.set(self.click)

    def buttonCommand(self):              
        self.click += 1*(self.mult)
        self.clickView.set(self.click)
        self.uiPrint()


if __name__ == '__main__':
    master = Tk()        
    master.title("Clicker")
    master.geometry("%sx%s+%s+%s" % (200,70,512,512))  
    clicker = Clicker(master)

    mainloop() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM