2012-12-31 3 views
2

Я использую Tkinter для GUI, и у меня есть одна проблема: Я пытаюсь сделать сообщение виджет, и когда я пишу:AttributeError: Экземпляр Сообщение не имеет атрибута «пакет»

body = Message(top, bd = 2) 
body.pack(side=RIGHT) 

I получить эту ошибку:

body.pack(side=RIGHT) 
AttributeError: Message instance has no attribute 'pack' 

Я не понимаю, это Becaue я проверил в некоторых руководствах и Его разрешено использовать «сообщение» таким образом, как показано здесь в примере: http://www.tutorialspoint.com/python/tk_message.htm

Есть ли другой способ написать это?

+0

Возможно, у вас либо есть другая версия Tkinter, либо вы импортировали что-то еще в свое пространство имен с именем Message. Как выглядят ваши инструкции импорта? –

+0

Благодарим за быстрый ответ. Вот как мой оператор импорта выглядит следующим образом: от импорта сокета * от импорта base64 * от Tkinter импорта * из tkMessageBox импорта * – arikm9

+0

я не знаю, как организовать коды в комментариях, Im здесь новый, извините .. – arikm9

ответ

1

В Tkinter есть не менее двух классов Message. Один из них идет от tkMessageBox.Message, а другой - от Tkinter.Message. Первый является подклассом Dialog от tkCommonDialog, и поскольку упаковка диалогового окна не имеет смысла, для этого случая нет метода pack. Позже это виджет Tk, называемый сообщением, который вам нужен; будучи виджетом, имеет смысл упаковать его.

Ваш полный код в основном, как что-то в виде (Python 2):

from Tkinter import * 
from tkMessageBox import * 

Второй импорт теней на Message класс от первого импорта. Для того, чтобы использовать Message класс вы после, просто изменить код выше для:

from Tkinter import * 
import tkMessageBox 

Затем адаптировать свой код соответственно.

+0

Еще лучше совет ИМО должен защищать неглобальный импорт, такой как 'import Tkinter as tk' –

+0

Спасибо, что помощь, но, похоже, есть еще одна проблема? Не предполагается ли многозадачность на многострочный вход? потому что это просто текстовое поле с текстом, который я написал в коде. Я не могу писать в этом поле. – arikm9

+0

Это многострочная метка, противоположная входному виджету. – mmgp

Смежные вопросы