簡體   English   中英

如何在Python Tkinter中創建按鈕以將整數變量增加1並顯示該變量?

[英]How do I create a button in Python Tkinter to increase integer variable by 1 and display that variable?

我正在嘗試創建一個Tkinter程序,該程序將存儲一個int變量,並在每次單擊按鈕時將該int變量增加1,然后顯示該變量,以便可以看到它以0開始,然后每次單擊按鈕上升1。我正在使用python 3.4。

import sys
import math
from tkinter import *

root = Tk()
root.geometry("200x200")
root.title("My Button Increaser")

counter = 0
def nClick():
    counter + 1

def main_click():
    mLabel = Label(root, text = nClick).pack()


mButton1 = Button(text = "Increase", command = main_click, fg = "dark green", bg = "white").pack()

root.mainloop()

您可以使用Tkinter變量。 當您需要修改其他小部件可能與之交互的數據時,它們特別有用。 這是與問題中的代碼相似的代碼,但不是將counter定義為普通變量,而是Tkinter的變量。

import tkinter
import sys

root = tkinter.Tk()
root.geometry("200x200")
root.title("His Button Increaser")

counter = tkinter.IntVar()

def onClick(event=None):
    counter.set(counter.get() + 1)

tkinter.Label(root, textvariable=counter).pack()
tkinter.Button(root, text="Increase", command=onClick, fg="dark green", bg = "white").pack()

root.mainloop()

我們沒有將變量保存的值傳遞給Labeltext屬性,而是將變量分配給textvariable屬性,因此,當變量的值得到更新時, Label會相應地更新顯示的文本。

當您想要更改變量的值時,需要調用變量對象的set()方法(請參見onClick ),而不是直接為其分配值。

好的,到目前為止,您的代碼有些錯誤。 我的回答基本上將您已經擁有的內容更改為最簡單的方式來執行您想要的操作。

首先,導入不需要/不使用的庫(您可能在整個代碼中都需要它們,但是對於此問題,僅包括一個最小的示例)。 接下來,您必須將counter變量定義為global變量,以使其在函數中相同(也可以在函數內部執行此操作)。 另外,您必須將counter + 1更改為counter += 1 ,以使變量遞增

現在,代碼可以計數了,但是您已經將變量設置為Buttons,然后將它們設置為None類型對象,以在下一行更改此.pack()變量。 您只需第二個功能即可刪除第二個功能,然后將按鈕的命令及其文本更改為counter。 現在,要更新按鈕中的文本,請使用.config(text = counter)來配置按鈕。

這是最終的解決方案(更改按鈕值並且沒有標簽,但這很容易更改):

from tkinter import *

root = Tk()
root.geometry("200x200")
root.title("My Button Increaser")

global counter
counter = 0

def nClick():
    global counter
    counter += 1
    mButton1.config(text = counter)

mButton1 = Button(text = counter, command = nClick, fg = "darkgreen", bg = "white")
mButton1.pack()

root.mainloop()

希望有幫助!

暫無
暫無

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

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