0

ちょっと厄介な問題があるので、あなたがそれを解決するのを手伝ってくれるかどうかを確認するためにあなたのところに来ました. 私はPython2.7で次のコードを持っています:

# main window
root = tk.Tk()
root.title('My application')
# create the objects in the main window
w = buildWidgetClass(root)
# size of the screen (monitor resolution)
screenWi = root.winfo_screenwidth()
screenHe = root.winfo_screenheight()
# now that widgets are created, find the widht and the height
root.update()
guiWi = root.winfo_width()
guiHe = root.winfo_height()
# position of the window
x = screenWi / 2 - guiWi / 2
y = screenHe / 2 - guiHe / 2
root.geometry("%dx%d+%d+%d" % (guiWi, guiHe, x, y))

そのため、メイン ウィンドウを (サイズなしで) 作成し、内部にウィジェットを挿入し、結果のサイズを定義して、画面の中央に配置します。

ウィンドウ内のウィジェットの数は異なる場合があるため、結果のサイズは異なります!

これまでのところ、とても良いです、うまくいきます!私の唯一の問題は、ウィンドウが最初に画面の左上隅に表示され、次に中央に再配置されることです。大したことではありませんが、本当にプロフェッショナルでもありません。

そこで私のアイデアは、ウィジェットの作成時にメイン ウィンドウを非表示にし、ジオメトリを定義した後に表示することでした。

したがって、最初の行の後に、次を追加しました。

root.withdraw()

最後に:

root.update()
root.deiconify()

しかし、ウィンドウが再表示されると、ウィジェットによってサイズが変更されず、サイズが 1x1 になります!! root.withdraw()root.iconify( )に置き換えようとしましたが、ウィンドウのサイズは正しく変更されましたが、驚くべきことに、最後に非アイコン化されていません!!!

私はこれで少し迷っています...

4

2 に答える 2

1

root.winfo_reqwidthの代わりに使用するとroot.winfo_width、あなたの場合に役立つ場合があります。

于 2013-04-22T21:29:01.703 に答える