繁体   English   中英

Tkinter 字符串变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM