0

ここではPythonの初心者ですが、Pmwにはまだ新しいです:

Pmw MessageDialog ボックスを表示するために次のメソッドを定義しました。これは期待どおりに機能し、結果の値が返され、Tkinter.Text ウィジェットである edit1 に投稿されます。ここでの「self」は 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 ウィジェットが指定された座標に配置されますが、これには 2 つの副作用があります。

1) messageBox ウィジェットに、ダイアログ ボックス (閉じる 'X' ボタンのみ) ではなく、メイン ウィンドウのボタン (閉じる、最小化、最大化) が追加されました。

2) 結果値が edit1 にポストされることはありません。

質問:ダイアログ ボックスのボタン/境界線を維持し、テキスト (edit1) ウィジェットに投稿された値を取得しながら、メッセージ ボックスの位置を制御するにはどうすればよいですか。

ティア

4

1 に答える 1

0

答えは、ジオメトリ オプションを引用符で囲む必要があるということです。不適切なジオメトリ指定子によって例外がスローされたため、適切な結果が表示されませんでした。このコード:

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

正常に動作します。

于 2011-06-20T06:01:14.260 に答える