我正在尝试创建一些按钮,将浮动值附加到tkinter输入框中的当前值。
from tkinter import *
import tkinter.ttk
menu = Tk()
menu.geometry('800x480')
frame1 = Frame(menu)
frame1.grid()
#entry box
e1 = Entry(frame1)
e1.insert(0, float("1.0"))
e1.grid(row=2, pady=5, ipadx=5, ipady=5)
#buttons
bt1 = Button(frame1, text="Add 1.0")
bt1.grid()
bt2 = Button(frame1, text="Add 0.1")
bt2.grid()
bt3 = Button(frame1, text="Add 0.01")
bt3.grid()
例如,假设e1中的当前值为1.0。我想创建一个按钮,将1.0添加到当前值(将其转换为2.0并显示而不是1.0)。我还想制作添加值0.1和0.01的按钮。这样做的最佳方法是什么?目前我正在寻找使用计数器,但我不太确定如何实现它。
要想象我的意思,以防万一我没有很好地解释它基本上我有当前的设置before the button is clicked。假设我点击添加1.0我想要the 1.0 to turn into 2.0。
答案 0 :(得分:0)
您可以使用command=
将功能分配给按钮。此函数必须从Entry获取文本,转换为float,添加0.1,(删除Entry中的所有文本),将新值插入Entry,
import tkinter as tk
def add_1_0():
value = float(e1.get())
value += 1.0
e1.delete(0, 'end')
e1.insert(0, value)
def add_0_1():
value = float(e1.get())
value += 0.1
e1.delete(0, 'end')
e1.insert(0, value)
def add_0_01():
value = float(e1.get())
value += 0.01
e1.delete(0, 'end')
e1.insert(0, value)
root = tk.Tk()
#entry box
e1 = tk.Entry(root)
e1.insert(0, 1.0)
e1.pack()
#buttons
bt1 = tk.Button(root, text="Add 1.0", command=add_1_0)
bt1.pack()
bt2 = tk.Button(root, text="Add 0.1", command=add_0_1)
bt2.pack()
bt3 = tk.Button(root, text="Add 0.01", command=add_0_01)
bt3.pack()
root.mainloop()
您可以将重复的代码放在一个函数中
def add_1_0():
add(1.0)
def add_0_1():
add(0.1)
def add_0_01():
add(0.01)
def add(val):
value = float(e1.get())
value += val
e1.delete(0, 'end')
e1.insert(0, value)
如果您在一个函数中有代码,那么您可以使用lambda
为参数赋值函数。
import tkinter as tk
def add(val):
value = float(e1.get())
value += val
e1.delete(0, 'end')
e1.insert(0, value)
root = tk.Tk()
#entry box
e1 = tk.Entry(root)
e1.insert(0, 1.0)
e1.pack()
#buttons
bt1 = tk.Button(root, text="Add 1.0", command=lambda:add(1.0))
bt1.pack()
bt2 = tk.Button(root, text="Add 0.1", command=lambda:add(0.1))
bt2.pack()
bt3 = tk.Button(root, text="Add 0.01", command=lambda:add(0.01))
bt3.pack()
root.mainloop()