6

Windows での Python 2.7: Tkinter の共通ダイアログの位置を制御するにはどうすればよいですか?

これが私たちが発見したものです:

  • 特定の一般的なダイアログは、常に親ウィンドウに関連して開きます
  • 特定の一般的なダイアログが常にユーザーのデスクトップの中央に表示される
  • すべての一般的なダイアログは、オプションのparent=パラメーターを無視しているように見えます

質問:

  • ダイアログを親ウィンドウに対して強制的に開くにはどうすればよいでしょうか?
  • ユーザーのデスクトップの中央にダイアログを強制的に開くにはどうすればよいでしょうか?

バックグラウンド:

import tkColorChooser as colorchooser
import tkFileDialog as filedialog
import tkMessageBox as messagebox

; # always open up relative to parent windows
fileOpen   = filedialog.askopenfilename()
fileOpens  = filedialog.askopenfilenames()
fileSaveAs = filedialog.asksaveasfilename()
color      = colorchooser.askcolor()

; # always open up centered on desktop
folderOpen = filedialog.askdirectory()
messagebox.askquestion()

ありがとう、マルコム

4

1 に答える 1

1

Windows メッセージボックスの場合はできません。画面の中央に表示され、それだけです。ただし、ファイル選択ダイアログとカラー チューザーは、ユーザーがこのプラットフォームでストック ダイアログを表示できるように、Tk ラッパーが与えられたシステム ダイアログです。-parent オプションを設定すると、これはラップされたウィンドウに渡され、指定されたトップレベルの中央に配置されます。

Tkで:

toplevel .t
tk_chooseColor -parent .t

それを Tkinter に変換する方法 Python の経験がある人に任せます。

これらのセンタリングに関しては、CHOOSECOLOR 構造体の hwndOwner メンバーは、Tk トップレベルの 1 つの HWND に常に設定されます。デスクトップに対して親にするには、そこに NULL を渡す必要がありますが、Tk では許可されません。Unix バージョン (lib/clrpick.tcl) を入手して表示することもできますが、Windows デスクトップでは奇妙に見えます。

于 2011-03-05T11:07:11.487 に答える