Python Tkinter按钮因功能错误而无法创建

Python Tkinter按钮因功能错误而无法创建,python,button,user-interface,tkinter,Python,Button,User Interface,Tkinter,我对Python非常陌生,尤其是对使用Tkinter非常陌生。我有一个问题是如何在GUI中实际创建一个按钮 我正在尝试制作一个基本按钮,将输入框中的输入作为一个整数,并将其添加到当前余额中(类似于一个小型银行应用程序)。问题是,当我运行代码并单击“存款”按钮时,由于将输入框的输入转换为整数时出错,第二个应该生成(在Make_deposit()函数中定义)的“Make deposit”按钮将不会生成。据我所知,这个错误只是因为第二个“存款”按钮试图在按下按钮之前运行其功能而产生的。有没有办法防止这

我对Python非常陌生,尤其是对使用Tkinter非常陌生。我有一个问题是如何在GUI中实际创建一个按钮

我正在尝试制作一个基本按钮,将输入框中的输入作为一个整数,并将其添加到当前余额中(类似于一个小型银行应用程序)。问题是,当我运行代码并单击“存款”按钮时,由于将输入框的输入转换为整数时出错,第二个应该生成(在Make_deposit()函数中定义)的“Make deposit”按钮将不会生成。据我所知,这个错误只是因为第二个“存款”按钮试图在按下按钮之前运行其功能而产生的。有没有办法防止这种情况发生?下面是代码,不包括一些与当前问题无关的程序位

from Tkinter import *

def get_entry(entry):
    global s 
    s = entry.get()
    s = int(s)
    data["current"] += s   
    label = Label(root, text = "Current Balance: %d" % (data["current"]))
    label.grid(row = 1, column = 0)


def make_deposit():
    deposit = Entry(root, text = "Deposit Amount")
    deposit.grid(row = 2, column = 0)
    withdrawal.grid_forget()
    deposit_button = Button(root, text = "Make Deposit", command = get_entry(deposit))
    deposit_button.grid(row = 3, column = 0) 

frame = Frame(root, height = 300, width = 300)
frame.grid(row = 1, column = 0)

label = Label(root, text = "ETA Until Car Purchase")
label.grid(row = 0, column = 0)

label = Label(root, text = "Current Balance: %d" % (data["current"]))
label.grid(row = 1, column = 0)

deposit = Button(root, text = "Make Deposit", command = make_deposit)
deposit.grid(row = 2, column = 0)

withdrawal = Button(root, text = "Make Withdrawal")
withdrawal.grid(row = 3, column = 0)

任何帮助都将不胜感激,请考虑到我是Tkinter的绝对初学者,因此我创建一些GUI元素的方式可能不是最好的方式。

command=
不带
()
和参数的函数名

使用

command = get_entry(deposit)
您运行函数
get_entry(deposit)
,其结果被分配给
command=

如果您想动态地将函数分配给
command=

但是您需要
lambda

command = lambda: get_entry(deposit)

始终添加
完整错误消息
,并且有许多行有问题,所以请在代码中标记这一行。如果有问题,请使用
打印
查看变量中的内容(在提问之前)。顺便说一句:您忘了创建
根(
根=Tk()
),忘了运行mainloop(
根.mainloop())
)非常感谢!工作得很有魅力!顺便说一句:在
循环中使用
命令=
时,请注意
lambda
。大多数初学者在<代码>中的
i
for i in;command=lambda:function(i)