如何在Python Tkinter中创建一个按钮以将整数变量增加1并显示该变量?

时间:2014-10-27 22:35:23

标签: python button tkinter store

我正在尝试创建一个存储int变量的Tkinter程序,每次单击一个按钮时将该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()

2 个答案:

答案 0 :(得分:1)

您可以使用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()

我们将变量保存到text属性的Label属性,而不是将该变量保存到textvariable属性,因此当变量值更新时,{ {1}}将相应地更新显示的文本。

如果要更改变量的值,则需要调用变量对象的Label方法(请参阅set()),而不是直接将值赋给它。

答案 1 :(得分:1)

好的,所以到目前为止您的代码存在一些问题。我的回答基本上改变了你已经做到的最简单的方式来做你想做的事。

首先,您导入不需要/不使用的库(您可能需要在整个代码中使用它们,但对于此问题仅包含一个最小示例)。接下来,您必须将counter变量定义为global变量,以便它在函数中相同(在函数内部执行此操作)。此外,您必须将counter + 1更改为counter += 1,以便增加变量

现在代码可以计算,但是你已经将变量设置为Buttons,但是然后将它们设置为None类型对象,以在下一行更改此.pack()变量。您可以删除第二个函数,因为您只需要一个,然后您将按钮的命令及其文本更改为计数器。现在要更新按钮中的文本,使用.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()
希望有所帮助!