Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2011 13:19:50

Bujhm666
От:
Зарегистрирован: 2010-03-23
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - Диалоговое окно - Ошибка

Пытаюсь создать диалоговое окно и при попытке вызова получаю ошибку:
AttributeError: ‘App’ object has no attribute ‘tk’

# -*- coding: utf-8 -*-


from Tkinter import *
import ttk

class Test_Dialog(Toplevel):
def __init__(self, parent):
Toplevel.__init__(self, parent)
self.parent = parent
self.transient(self.parent)

frame = Frame(self)

lab = ttk.Label(frame, justify="left", anchor="n",
text="Мой техт")

lab.grid(row=0, column=0, padx=10, pady=5, sticky=E)
frame.grid(row=0, column=0, sticky=NSEW)

class App(object):
def __init__(self):
self.tool = ttk.Frame()
self.tool.pack(anchor = NW)

self.btn = ttk.Button(self.tool, text= u"Добавить", command=self._add_record)
self.btn.pack(side = LEFT)

def _add_record(self, event=None):
win = Test_Dialog(self)


if __name__ == "__main__":
root = Tk()
app = App()
root.mainloop()



Отредактировано (Март 30, 2011 13:34:39)

Офлайн

#2 Март 30, 2011 13:46:20

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Tkinter - Диалоговое окно - Ошибка

В следующей строчке вы передаете в констурктор экземпляр класса App, и он же parent для вашего нового фрейма. Но… Tkinter не понимает, что это за объект, и как он может быть parent'ом его объектов.

win = Test_Dialog(self)
Попробуйте так:
win = Test_Dialog(self.tool)



Офлайн

#3 Март 30, 2011 13:48:50

Bujhm666
От:
Зарегистрирован: 2010-03-23
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - Диалоговое окно - Ошибка

Большое спасибо, так действительно работает.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version