[英]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.