ジオメトリを使用して Python/Tkinter で簡単な入力ダイアログを設計していgrid
て、予期しない動作が発生しています。このコードから始めると:
winAddNew = tk.Toplevel()
winAddNew.title('Add New Customer')
lblName = tk.Label(winAddNew,
anchor=tk.W,font=fntNormal,
text='Enter the complete name of the customer:')
entName = tk.Entry(winAddNew,
justify=tk.LEFT, font=fntNormal, width=20,
textvariable=ctrlNewCustomerName)
lblID = tk.Label(winAddNew,
anchor=tk.W,font=fntNormal,
text='Enter a unique three-character ID:')
entID = tk.Entry(winAddNew,
justify=tk.LEFT, font=fntNormal, width=8,
textvariable=ctrlNewCustomerID)
lblName.grid(row=0,column=0,columnspan=2,sticky=tk.W,padx=10,pady=(10,0))
entName.grid(row=1,column=0,columnspan=2,sticky=tk.W,padx=10,pady=(5,0))
lblID.grid(row=2,column=0,sticky=tk.W,padx=(10,0),pady=10)
entID.grid(row=2,column=1,sticky=tk.W,padx=(0,10),pady=10)
...これは、レンダリングされたウィンドウが私のマシン (Windows 7、Python 2.7.3) でどのように見えるかです。緑色の線は実際には存在しないことに注意してください。行と列の位置であると想定するものをレイアウトするために使用しているだけです。
ここまでは順調ですね。width
ここで、をentName
まで設定60
して、顧客名を入力するスペースをより広く確保したいと考えています。にcolumnspan
設定されて2
おり、すべてのウィジェットが でオプションに設定されているtk.W
ためsticky
、 の幅を増やしてentName
も、エントリ ウィジェット自体を広げ、それに応じてウィンドウを広げる以外に効果はないと予想しています。他のすべてのウィジェットの相対的な位置は同じままである必要があります。
いいえ。拡大entName
するentID
と、 から押し出されますlblID
:
それで、私は何が欠けていますか?なぜentID
元の場所にとどまらないのですか?そして、行2を独自のフレームにブロックすることを除いて、それを所定の位置に保つ方法はありますか?