2017-05-24 1 views
1

でテキスト入力ボックスを挿入することはできません。私がそれを実行すると、エラーなしでコンパイルされるのがわかりますが、実際には開いているウィンドウは表示されません。エラーは、テキスト入力フィールドをパックしようとしたときに発生します。どんな助けでも大歓迎です。のPythonのTkinterは:私の次Tkinterのスクリプトが正しく動作does notの理由を私は理解できないフレーム

from Tkinter import * 
import ttk 


main = Tk() 
main.title('Testing') 

topframe = Frame(main) 
topframe.pack(side = TOP) 

bottomframe = Frame(main) 
bottomframe.pack(side = BOTTOM) 


frame = Frame(main) 
frame.pack() 

Label(topframe, text="Date").grid(row=0) 
e1 = Entry(topframe) 
e1.insert(1, "May 24, 2017") 
e1.pack() 
main.mainloop() 

答えて

1

は、実際にエラーがあります。

_tkinter.TclError: cannot use geometry manager pack inside .!frame which already has slaves managed by grid 

あなたは.pack, .grid, .placeのようなあなたのレイアウトマネージャを使用する方法についての世話をする必要があります。これをチェックアウトlinkジオメトリマネージャに関する情報

変更:

Label(topframe, text="Date").grid(row=0)

へ:

Label(topframe, text="Date").pack()

そして、あなたのプログラムが正常に実行されます。

これは私のために正常に動作します。

enter image description here

:この時点で、あなたはで ttk

from Tkinter import * 

main = Tk() 
main.title('Testing') 

topframe = Frame(main) 
topframe.pack(side = TOP) 

bottomframe = Frame(main) 
bottomframe.pack(side = BOTTOM) 

frame = Frame(main) 
frame.pack() 

Label(topframe, text="Date").pack() 
e1 = Entry(topframe) 
e1.insert(1, "May 24, 2017") 
e1.pack() 

main.mainloop() 

結果をインポートする必要はありません

1

いずれのウィジェットの子もすべて同じジオメトリマネージャを使用する必要があります。具体的には、topframeには.grid()を使用するラベルがあり、.pack()を使用するエントリがあります。 2人のジオメトリ・マネージャーは、ウィジェットの配置に決して同意することはできません。それらのうちの1つを他のものと一致するように変更してください。どちらを変更するかはあなたの選択です(topframeがその親にパックされているということはあなたの選択に影響しません)。このような何かを実行しようとすると

関連する問題