Найти - Пользователи
Полная версия: Tkinter. Проблема с методами в классах.
Начало » GUI » Tkinter. Проблема с методами в классах.
1 2
Jazzis
Не могу понять в чем проблема. Хочу сделать, шоб по нажатию 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()
sp3
command= self.AboutMsg
Jazzis
sp3
command= self.AboutMsg
спс, терь понял для чего нужен self :P
Griffon
Вам следует прочесть литературу по классам в питоне ещё раз (или первый раз), потому что у вас есть ещё одна ошибка в определении метода AboutMsg.
Jazzis
вот тот же 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')
вот еще пример, тут получаем что в поле InfoLabel написано
ошибка: NameError: global name ‘InfoLabel’ is not defined
никак не могу решить данную проблему
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()
Griffon
InfoLable - а говорили что поняли зачем self.
TopLevel - Toplevel.
sypper-pit
вообще данная ошибка выходит из-за того что не объявлена глобальная переменная в классе, те вы пытаетесь запросить переменную которой нет для этого класса. думаю вам надо почитать, что такое глобальные и локальные переменные, даю подсказку “у вас в классе обрабатывается только локальная переменная” 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
Jazzis
Что-то поправил и стала возникать следующая ошибка: AttributeError: shell instance has no attribute ‘AboutWin’
def About(self):
self.AboutWin.deiconify()
Jazzis
Jazzis
AttributeError: shell instance has no attribute ‘AboutWin’
рыская по инету обнаружил что такая ошибка может возникать что переменная вызывается из вне класса, т.е. она закрытая (прим. с двойным подчеркиванием __foo). Может также здесь? переменные почему-то считаются закрытыми..
sp3
скорее всего в этом классе нет AboutWin.
код тут нужно ваш смотреть, иначе угадайка получается.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB