[英]Tkinter StringVar
嗨,伙计们,我正在尝试添加一个每次单击按钮时都会增加 0.2 的函数。 我能够用 IntVar (1, 2, 3 ...) 来做到这一点,但现在我对此很愚蠢。 它应该同时执行 1、2、3 等步骤和 0.2、0.4、0.6 等步骤。
from tkinter import *
from tkinter.ttk import *
root = tkinter.Tk()
root.geometry("200x200")
root.minsize("300", "200")
root.maxsize("400", "300")
root.title("Test")
counter = tkinter.IntVar()
fish = tkinter.StringVar()
fished = 0
def onClick(event=None):
fish.set(str(fished + 0.2))
counter.set(counter.get() + 1)
print(counter.get())
num1 = counter.get() * 0.2
print(num1)
messagevar = Message(root, textvariable = fish)
messagevar.config(bg="lightgreen")
messagevar.pack()
tkinter.Label(root, textvariable=counter).pack()
tkinter.Button(root, text="increase", command=onClick, fg="black", bg = "white").pack()
root.mainloop()```
您可以像使用整数计数器一样增加字符串计数器:
import tkinter
def on_click():
fish.set(f'{float(fish.get()) + 0.2:.1f}')
counter.set(counter.get() + 1)
root = tkinter.Tk()
root.geometry("200x200")
counter = tkinter.IntVar()
fish = tkinter.StringVar(value='0')
message_var = tkinter.Message(root, textvariable=fish, bg="lightgreen")
message_var.pack()
tkinter.Label(root, textvariable=counter).pack()
tkinter.Button(root, text="increase", command=on_click, fg="black", bg="white").pack()
root.mainloop()
只需获取值,将其转换为浮点数,添加 .2,并由于浮点精度而对其进行格式化。
您也可以在初始化对象时配置背景,并且您的给定代码实际上不会运行,因为名称tkinter
未定义。
此外:
我强烈建议不要在导入时使用通配符 ( *
),您应该导入您需要的内容,例如from module import Class1, func_1, var_2
等,或者导入整个模块: import module
then 您也可以使用别名: import module as md
或诸如此类,关键是不要导入所有内容,除非您确实知道自己在做什么; 名称冲突是问题。
我强烈建议遵循PEP 8 - Python 代码风格指南。 函数名和变量名应该在snake_case
,类名应该在CapitalCase
。 如果=
用作关键字参数的一部分( func(arg='value')
),则周围没有空格,但如果用于分配值( variable = 'some value'
),则=
周围没有空格。 在运算符周围留有空格( +-/
等: value = x + y
(此处value += x + y
除外))。 在函数和类声明周围有两个空行。
根据定义,整数不存储小数位; 你必须使用浮点型。 您可以使用DoubleVar()
而不是IntVar()
。 但是,您可以在尝试时使用变量。
from tkinter import *
from tkinter.ttk import *
root = tkinter.Tk()
root.geometry("200x200")
root.minsize("300", "200")
root.maxsize("400", "300")
root.title("Test")
counter = tkinter.DoubleVar()
fish = tkinter.StringVar()
fished = 0
def onClick(event=None):
global fished
fished += 0.2 # equivalent to fished = fished + 0.2
fish.set(str(fished))
counter.set(counter.get() + 0.2)
print(counter.get())
messagevar = Message(root, textvariable = fish)
messagevar.config(bg="lightgreen")
messagevar.pack()
tkinter.Label(root, textvariable=counter).pack()
tkinter.Button(root, text="increase", command=onClick, fg="black", bg = "white").pack()
root.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.