Контроль местоположения Pmw.MessageDialog (и других подобных виджетов) - PullRequest
0 голосов
/ 18 июня 2011

Python новичок здесь, еще новее Pmw:

У меня есть следующий метод, показанный для отображения поля Pmw MessageDialog, и он работает как положено, а значение результата возвращается и публикуется в edit1, который является виджетом Tkinter.Text; «Я» здесь - это Tkinter.Frame. (работает под управлением Win7-32 ​​и Python v2.7.2):

def _showMessageBar(self):

        dialog = Pmw.MessageDialog(self, title = 'DBox',defaultbutton = 0,buttons('OK',Cancel'), message_text = 'DBox')
        dialog.iconname(dialog['title'])
        try:
            result = dialog.activate()
        finally:
            dialog.deactivate() 
        self.edit1.insert(END, result+ "\n")

Проблема в том, что вызов dialog.activate () не позволяет мне контролировать местоположение MessageBox.

Если я изменю этот вызов на:

result = dialog.activate(geometry = first+50+20)

тогда виджет messageBox помещается в указанные координаты, , но это имеет два побочных эффекта:

1) Виджет messageBox теперь имеет кнопки главного окна (закрыть, свернуть, развернуть), а не диалоговое окно (только кнопка закрытия 'X')

2) Значение результата никогда не публикуется в edit1.

Вопрос: Как мне управлять местоположением MessageBox, сохраняя кнопки / границы диалогового окна и получая значение, отправленное в виджет Text (edit1).

ТИА

1 Ответ

0 голосов
/ 20 июня 2011

Ответ заключается в том, что параметры геометрии должны быть в кавычках, я не вижу правильных результатов, потому что исключение было вызвано неправильным спецификатором геометрии.Этот код:

result = dialog.activate(geometry = "first+50+20")

отлично работает.

...