【问题标题】:Calculator buttons are not working and giving "Not Defined" error message计算器按钮不起作用并给出“未定义”错误消息
【发布时间】:2019-07-22 00:01:22
【问题描述】:

我正在通过观看教程编写程序,并且我已经设法在我的计算器应用程序内和计算器屏幕显示下方正确排列按钮。现在,当我尝试单击计算器中的任何按钮时,它会在 pycharm 中显示一条错误消息..

我已经尝试了一些替代代码来使按钮工作,并且每个其他类似的问题都有完全不同的按钮代码和所有内容,所以我无法通过从主题中获得帮助来完成我的工作..它们是不同的..但没有他们中的一个正在工作..

代码:

from tkinter import *

cal = Tk()
cal.title("Calculator New")

operator = ""

text_Input = StringVar()
txtDisplay = Entry(cal, font = ('comic sans ms', 20, 'bold', 'italic'),
 textvariable = text_Input, bd = 30, insertwidth = 4, bg ="Black", fg = "Red",
                justify ='right').grid(columnspan = 4)

btn7 = Button(cal, padx = 16, pady = 16, bd = 8, fg = "black", bg ="white", font = ('comic sans ms' , 10, 'bold',),
          text = "7", command = lambda:btnClick(7)).grid(row=1, column=0)

cal.mainloop()

预期:

当我点击 7 时,显示应该显示 7。

实际:

按钮不起作用并在pycharm中显示此错误消息..

NameError:名称“btnClick”未定义

【问题讨论】:

  • 我解决了这个问题,我添加了一个名为 btnClick 的新函数并传递了数字和某种全局运算符......谢谢......
  • 发布您的问题的答案,并在 48 小时后将其选为正确答案。

标签: python-3.x button tkinter calculator


【解决方案1】:

您需要定义一个函数并将其分配给按钮:

def btnClick():
    number = btn7.cget('text')
    txtDisplay.insert(string=number, index=0)

而且不需要添加 lambda。你需要这样做:

btn7.grid(row=1, column=0) 

代替:

btn7 = Button(cal, padx = 16, pady = 16, bd = 8, fg = "black", bg ="white", font = ('comic sans ms' , 10, 'bold',), text = "7", command = lambda:btnClick(7)).grid(row=1, column 
=0)

因为这样做会引发大量错误。

完整代码:

from tkinter import *

def btnClick():
    number = btn7.cget('text')
    txtDisplay.insert(string=number, index=0)

cal = Tk()

cal.title("Calculator New")

operator = ""

text_Input = StringVar()
txtDisplay = Entry(cal, font=('comic sans ms', 20, 'bold', 'italic'), textvariable = text_Input, bd = 30, insertwidth = 4, bg ="Black", fg = "Red", justify ='right')
txtDisplay.grid(columnspan = 4)

btn7 = Button(cal, padx = 16, pady = 16, bd = 8, fg = "black", bg ="white", font = ('comic sans ms' , 10, 'bold',), text = "7", command=btnClick)
btn7.grid(row=1, column=0)

cal.mainloop()

欢迎使用 StackOverflow!

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2021-02-02
    相关资源
    最近更新 更多