我是编程新手,这是我在网站上的第一篇文章。我确定我犯了一个愚蠢的错误,但我真的很欣赏向正确的方向发展。我试图制作一个计算器,并希望创建一个为数字生成Button对象的函数。当我尝试运行时,我收到错误:
' NameError:name' num_but_gen'未定义'
以下是代码:
from tkinter import *
WINDOW_HEIGHT = 300
WINDOW_WIDTH = 325
class Window(Frame):
def __init__(self, master = None):
Frame.__init__(self, master)
self.master = master
self.init_window()
def num_but_gen(self, disp, xloc=0, yloc=0, wid=0, hei=0):
self.Button(text='{}'.format(disp),height=hei, width=wid)
self.place(x=xloc, y=yloc)
def init_window(self):
self.master.title('Calculator')
self.pack(fill=BOTH, expand=1)
Button1 = num_but_gen('1', xloc=0, yloc=200, wid=40, hei=40)
root = Tk()
app = Window(root)
root.geometry("{}x{}".format(WINDOW_WIDTH,WINDOW_HEIGHT))
root.mainloop()
任何帮助将不胜感激!对于如何在以后的帖子中更好地表达我的问题标题的建议,任何人都可以获得奖励积分。
答案 0 :(得分:0)
jasonharper是对的,您需要在self
前添加num_but_gen
,但您的代码中还有其他问题。
在num_but_gen
:
Button
属性,因此您需要删除self.
前面的Button
Window
实例,而是您要放置的按钮text='{}'.format(disp)
,text=disp
也会这样做。在init_window
:
num_but_gen
的结果存储在变量中,但此函数不返回任何内容以使其无用(大写的名称不应用于变量,只能用于类名)wid=40, hei=40
将创建一个非常大的按钮。如果要设置按钮大小(以像素为单位),可以通过place
方法来实现。以下是相应的代码:
import tkinter as tk
WINDOW_HEIGHT = 300
WINDOW_WIDTH = 325
class Window(tk.Frame):
def __init__(self, master = None):
tk.Frame.__init__(self, master)
self.master = master
self.init_window()
def num_but_gen(self, disp, xloc=0, yloc=0, wid=0, hei=0):
button = tk.Button(self, text=disp)
button.place(x=xloc, y=yloc, height=hei, width=wid)
def init_window(self):
self.master.title('Calculator')
self.pack(fill=tk.BOTH, expand=1)
self.num_but_gen('1', xloc=0, yloc=200, wid=40, hei=40)
root = tk.Tk()
app = Window(root)
root.geometry("{}x{}".format(WINDOW_WIDTH,WINDOW_HEIGHT))
root.mainloop()