我正在尝试创建一个存储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()
答案 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()
希望有所帮助!