0

アプリケーションでこのコードを使用するたびに:

tkMessageBox.showinfo("Test", "Info goes here!")

メッセージ ボックスが表示されますが (想定どおり)、[OK] をクリックすると、ウィンドウ上の他のほとんどのウィジェットと一緒にボックスが消えます。他のウィジェットが消えないようにするにはどうすればよいですか?


これが私のコードです:

from Tkinter import *
import tkMessageBox
root = Tk()
root.minsize(600,600)
root.maxsize(600,600)
p1 = Label(root, bg='blue')
p1.place(width=600, height=600)
b1 = Button(p1, text="Test Button")
b1.place(x="30", y="50")
tkMessageBox.showinfo("Test", Info")
root.mainloop()
4

1 に答える 1

1

わかりました、ここでうまくいかないことがいくつかあります。まず、ラベルには文字列や画像が関連付けられていません。したがって、幅と高さは非常に小さくなります。パックを使用するため、含まれているウィジェット (ルート ウィンドウ) は、このウィジェットとルート ウィンドウにパックする他のウィジェットの周りに「収まるように縮小」します。

次に、ボタンの場所を使用します。これは、ボタンのサイズが親のサイズに影響しないことを意味します。それだけでなく、非常に小さなラベルの中にボタンを配置します。したがって、親のサイズを制御する唯一のものはラベルであるため、メイン ウィンドウは非常に小さくなります。

イベントループに入る前にダイアログを表示しているという別の問題があります。それが機能することにも少し驚いていますが、Tkinter は隠れて異常なことをすることがあります。ダイアログを呼び出す前に、イベント ループに入る必要があります。

コードの次のバリエーションを開始点として試してください。

from Tkinter import *
import tkMessageBox
def showInfo():
    tkMessageBox.showinfo("Test","Info")

root = Tk()
p1 = Label(root, bg='blue', text="hello")
p1.pack()
b1 = Button(root, text="Test Button", command=showInfo)
b1.pack()
root.mainloop()
于 2010-10-20T16:46:44.607 に答える