Я пытаюсь использовать Tkinter для создания графического интерфейса пользователя, код:NameError: имя «сверху» не определено
from tkinter import *
class LoginFrame(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
# initialize the login screen UI
def initUI(self):
self.parent.title("Login Screen")
# create a menu bar
menubar = Menu(top)
# create a help menu
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="About", command=about)
menubar.add_cascade(label="Help", menu=helpmenu)
# display the menu
self.parent.config(menu=menubar)
#----------------------------------------------------------------------
def about():
"""about info"""
print("This is a Tkinter demo")
# create a button
#----------------------------------------------------------------------
def make_button(parent, command, caption=NONE, side=top, width=0, **options): # name error 'top' is not defined
"""make a button"""
btn = Button(parent, text=caption, command=command)
if side != top:
btn.pack(side=side)
else:
btn.pack()
return btn
def main():
top = Tk()
# Set up login frame properties
top.title("Login Screen")
# create a login button
login_btn = make_button(top, about, "Login")
top.mainloop()
if __name__ == '__main__':
main()
Я попытался запустить код, питон дал мне следующую ошибку:
builtins.NameError: name 'top' is not defined
но, верхняя часть определена в tkinter, и я импортировал tkinter – daiyue
@ daiyue: Это? В терминале Python 3.5 я просто сделал '>>> import tkinter',' >>> tkinter.top' и дал атрибут AttributeError. – ShadowRanger
Я не думаю, что это в моем дистрибутиве - попробуйте ввести из 'tkinter import top' в ваш интерпретатор, и я думаю, что он потерпит неудачу. Вы определяете верхнюю часть своей основной функции, но она находится в локальной области, то есть она может использоваться только с функцией. – srowland