Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Tkinter. Проблема с методами в классах. [RSS Feed]

#1 Окт. 12, 2011 08:08:34

Jazzis
От:
Зарегистрирован: 2011-08-17
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

Не могу понять в чем проблема. Хочу сделать, шоб по нажатию 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()



Офлайн

#2 Окт. 12, 2011 12:47:16

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

command= self.AboutMsg



Офлайн

#3 Окт. 12, 2011 14:16:40

Jazzis
От:
Зарегистрирован: 2011-08-17
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

sp3
command= self.AboutMsg
спс, терь понял для чего нужен self :P



Офлайн

#4 Окт. 12, 2011 14:32:41

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

Вам следует прочесть литературу по классам в питоне ещё раз (или первый раз), потому что у вас есть ещё одна ошибка в определении метода AboutMsg.



Офлайн

#5 Окт. 16, 2011 13:54:50

Jazzis
От:
Зарегистрирован: 2011-08-17
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

вот тот же 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()



Отредактировано (Окт. 16, 2011 22:16:07)

Офлайн

#6 Окт. 18, 2011 19:10:20

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

InfoLable - а говорили что поняли зачем self.
TopLevel - Toplevel.



Офлайн

#7 Окт. 19, 2011 04:48:44

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

вообще данная ошибка выходит из-за того что не объявлена глобальная переменная в классе, те вы пытаетесь запросить переменную которой нет для этого класса. думаю вам надо почитать, что такое глобальные и локальные переменные, даю подсказку “у вас в классе обрабатывается только локальная переменная” 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)

Офлайн

#8 Окт. 20, 2011 17:51:13

Jazzis
От:
Зарегистрирован: 2011-08-17
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

Что-то поправил и стала возникать следующая ошибка: AttributeError: shell instance has no attribute ‘AboutWin’

def About(self):
self.AboutWin.deiconify()



Офлайн

#9 Окт. 21, 2011 17:36:46

Jazzis
От:
Зарегистрирован: 2011-08-17
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

Jazzis
AttributeError: shell instance has no attribute ‘AboutWin’
рыская по инету обнаружил что такая ошибка может возникать что переменная вызывается из вне класса, т.е. она закрытая (прим. с двойным подчеркиванием __foo). Может также здесь? переменные почему-то считаются закрытыми..



Отредактировано (Окт. 21, 2011 17:37:11)

Офлайн

#10 Окт. 21, 2011 20:28:12

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Tkinter. Проблема с методами в классах.

скорее всего в этом классе нет AboutWin.
код тут нужно ваш смотреть, иначе угадайка получается.



Офлайн

  • Начало
  • » GUI
  • » Tkinter. Проблема с методами в классах.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version