Python3 Tkinter - 按浮动增加输入框值的按钮,如1.0,然后更新输入框显示

时间:2017-12-02 06:37:35

标签: python python-3.x tkinter tkinter-entry

我正在尝试创建一些按钮,将浮动值附加到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

1 个答案:

答案 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()