Форум сайта python.su
Не могу понять в чем проблема. Хочу сделать, шоб по нажатию Menubutton вызывался метод AboutMsg. Еще надо ли msg.pack() ?
При тестировании выскакивает ошибка NameError: global name ‘AboutMsg’ is not defined. Я уже куда тока не засовывал его (и после тож ставил), серавно одна и та же ошибка.
class shell():
def AboutMsg():
msg = Message(root, anchor= CENTER, justify= CENTER,
font=('Arial', 9), text='This is test.', width=200)
msg.pack()
def __init__(self):
root = Tk()
.
.
TopBar = Menu(root)
root.config(menu= TopBar)
.
.
MenuAbout = Menubutton(TopBar, command= AboutMsg)
.
.
root.mainloop()
Офлайн
command= self.AboutMsg
Офлайн
sp3спс, терь понял для чего нужен self :P
command= self.AboutMsg
Офлайн
Вам следует прочесть литературу по классам в питоне ещё раз (или первый раз), потому что у вас есть ещё одна ошибка в определении метода AboutMsg.
Офлайн
вот тот же AboutMsg, только написан по другому..
не может определить что таке TopLevel, проблема скорее в том что метод вызывается уже после выполнения root.mainloop()
ps по ходу читаю про классы
def AboutWin(self):
win = TopLevel(root, height=100, width=200)
AboutLabel = Label(win, text='This is test.', font=('Arial', 9))
AboutLabel.place(anchor='CENTER')
class shell():
def __init__(self):
root = Tk()
.
.
MenuFile.add_command(label='Connect to server..', command= self.Connect)
.
.
root.mainloop()
def Connect(self):
name = InfoLabel.get()
Отредактировано (Окт. 16, 2011 22:16:07)
Офлайн
InfoLable - а говорили что поняли зачем self.
TopLevel - Toplevel.
Офлайн
вообще данная ошибка выходит из-за того что не объявлена глобальная переменная в классе, те вы пытаетесь запросить переменную которой нет для этого класса. думаю вам надо почитать, что такое глобальные и локальные переменные, даю подсказку “у вас в классе обрабатывается только локальная переменная” http://python.su/forum/viewtopic.php?id=2283 а еще http://docs.python.org/library/stdtypes.html?highlight=class# , а вообще очень похоже на http://python.su/forum/viewtopic.php?id=10515
Отредактировано (Окт. 19, 2011 04:52:08)
Офлайн
Что-то поправил и стала возникать следующая ошибка: AttributeError: shell instance has no attribute ‘AboutWin’
def About(self):
self.AboutWin.deiconify()
Офлайн
Jazzisрыская по инету обнаружил что такая ошибка может возникать что переменная вызывается из вне класса, т.е. она закрытая (прим. с двойным подчеркиванием __foo). Может также здесь? переменные почему-то считаются закрытыми..
AttributeError: shell instance has no attribute ‘AboutWin’
Отредактировано (Окт. 21, 2011 17:37:11)
Офлайн
скорее всего в этом классе нет AboutWin.
код тут нужно ваш смотреть, иначе угадайка получается.
Офлайн