我正在制作一個簡單的點擊游戲,但我不能讓點數更新。 當我按下按鈕時,點數顯示為1,但之后就不再變化了。
from functools import partial
from tkinter import *
# Set up the window"Clicker game")
screen.geometry("700x700")
#Variables[/span
points = 0
pointsAdded = 1
#實際游戲。
def click(points, pointsAdded)。
points = pointsAdded
stringVar.set(str(point))
stringVar = StringVar()
textPoints = Label(screen, textvariable = stringVar, font=("Courier", 20)
textPoints.grid(row=0, column=0)
#Buttons[/span]。
myButton = Button(screen, text = " ", padx=50, pady=50, command=lambda: click( points, pointsAdded))
myButton.grid(row=5, column=1)
uj5u.com熱心網友回復:
發生這種情況的原因在這里解釋得很清楚。基本上,當你把 points 和 pointsAdded 傳遞給 click 時,Python 對函式內部的變數做了一個新的參考,所以當你改變函式內部的值時,原來的變數仍然沒有改變。為了解決這個問題,你可以利用全域變數:
#Variables。
點 = 0
pointsAdded = 1
#實際游戲。
def click()。
global points
points = pointsAdded
stringVar.set(str(point))
stringVar = StringVar()
textPoints = Label(screen, textvariable = stringVar, font=("Courier", 20)
textPoints.grid(row=0, column=0)
#Buttons[/span]。
myButton = Button(screen, text = " "/span>, padx=50, pady=50, command= click)
myButton.grid(row=5, column=1)
global關鍵字告訴 Python 檢查這些變數的全域范圍,因為它們是在 click 函式之外定義的。因為它直接改變了變數的值,而不是作為一個參考被傳遞,所以變數會按照你的要求增加。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/319437.html
標籤:
上一篇:為什么我需要lambdafunc來讓bindto<Key>呼叫Tkinter根視窗中的一個方法?
下一篇:_tkinter.TclError:wrong#args:shouldbe".!entry4insertindextext"
