嗨,伙计们,我试图添加一个函数,每次我点击这个按钮的时候都会增加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()```发布于 2021-10-27 13:06:50
整数不按定义存储小数位;您必须使用浮点数类型。您可以使用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()发布于 2021-10-27 12:52:27
您可以使用与整数计数器相同的方式增加字符串计数器:
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,然后您也可以使用别名:import module as md或类似的东西,关键是除非您真正知道自己在做什么,否则不要导入所有东西;名称冲突才是问题所在。
我强烈建议遵循PEP 8- Python代码样式指南。函数和变量名应该在snake_case中,类名在CapitalCase中。如果=被用作关键字参数(func(arg='value'))的一部分,则不要在=周围留出空间,但是如果它用于赋值(variable = 'some value'),则在=周围有空间。在操作符周围有空间(+-/等:value = x + y(除了这里的value += x + y))。函数和类声明周围有两个空行。
https://stackoverflow.com/questions/69738637
复制相似问题