0

这里是 Python 新手,对 Pmw 来说还是比较新的:

我定义了以下用于显示 Pmw 消息对话框的方法,它按预期工作,结果值返回并发布在 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() 的调用不允许我控制消息框的位置。

如果我将该调用更改为:

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

然后将 messageBox 小部件放置在指定的坐标处,但这有两个副作用:

1) messageBox 小部件现在具有主窗口的按钮(关闭、最小化、最大化)而不是对话框(只是关闭“X”按钮)

2) 结果值永远不会发布到edit1。

问题:我如何控制 messageBox 的位置,同时保持对话框按钮/边框并获取发布到 Text (edit1) 小部件的值。

TIA

4

1 回答 1

0

答案是几何选项需要用引号引起来,我没有看到正确的结果,因为不正确的几何说明符引发了异常。这段代码:

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

工作正常。

于 2011-06-20T06:01:14.260 回答