2017-06-07 10 views
0

私はTkinterで新しく、私はデータベースに書き込む "フォーム"(私は本当にそれをどのように呼び出すかわかりません)を作成したいと思います。私はそれで終わったが、私はレイアウトのために失望している。Tkinterでの位置づけは?

self.parent.title("Pozi") 
    self.pack(fill = BOTH, expand=True) 

    frame1 = Frame(self) 
    frame1.pack(side = LEFT) 

    lbl1 = Label(frame1, text = "ĂtadĂł kártyája", width = 15) 
    lbl1.pack(side = TOP, padx=5) 

    atadoText = StringVar() 
    atadoText.set('') 
    self.entry1 = Entry(frame1, textvariable=atadoText) 
    self.entry1.pack(side = BOTTOM, padx=5) 
    atadoText.trace('w',atado_enter) 
    self.atadoText = atadoText 
    self.entry1.focus() 

    frame2 = Frame(self) 
    frame2.pack(side = RIGHT) 

    lbl2 = Label(frame2, text = "ĂtvevĹ‘ kártyája", width = 15) 
    lbl2.pack(side = TOP, padx=5, expand=True) 

    atvevoText = StringVar() 
    atvevoText.set('') 
    self.entry2 = Entry(frame2, textvariable = atvevoText) 
    self.entry2.pack(side = BOTTOM, padx=5) 
    atvevoText.trace('w', atvevo_enter) 
    self.atvevoText = atvevoText 

    frame3 = Frame(self) 
    frame3.pack(side = RIGHT) 

    lbl3 = Label(frame3, text = "ĂrvevĹ‘ kártyája", width = 15) 
    lbl3.pack(side = TOP, padx=5, expand=True) 

    lblText = StringVar() 
    lblText.set('') 
    self.entry3 = Entry(frame3, textvariable = lblText) 
    self.entry3.pack(side = TOP, padx=5, expand=True) 
    lblText.trace('w', lbl_count) 
    self.lblText = lblText 


    lbl4 = Label(frame3, text = "Title", width = 15) 
    lbl4.pack(side = TOP, anchor=N, padx=5, pady=5) 

    self.txt = Text(frame3) 
    self.txt.pack(fill = BOTH, side = TOP, padx=5, pady=5, expand=True) 

それはこのようなものを作成: enter image description here

を、私は何かが次のようになりたい

は、私が「フォーム」を作り、このコードを持っています。しかし、私はすべてのアイデアappriciate:すべての enter image description here

答えて

1

まず、グーグルのを恐れてはいけない程度pack manager、特に約packer algorithm、それはあなたが得るものを手に入れる理由を理解しようとした後。

ロジックはpackロジックであるため、初心者がウィジェットの水平と垂直の位置を制御するのは簡単な作業ではありません。したがって、「分割と征服」の原則を覚えておいて、あなたのプログラムのレイアウトをブロックのセットとして扱います。ブロックのセットは、ウィジェットを混在させることなく水平方向または垂直方向に配置します。 layout

それぞれ赤ブロックは1つの配置順序とFrameウィジェット+ Root(または「マスター」Frame、1を作成すること自由に感じ)です:

があなたのレイアウトを考えてみましょう、それは次のようになります。

try: 
    import tkinter as tk 
except ImportError: 
    import Tkinter as tk 

root = tk.Tk() 

frame1 = tk.Frame() 
frame1.pack() 

for _ in range(2): 
    i_frame = tk.Frame(frame1) 

    label = tk.Label(i_frame, text='Sample%d' % _) 
    label.pack(padx=200) 

    entry = tk.Entry(i_frame) 
    entry.pack(padx=200) 

    i_frame.pack(side='left', ipady=25) 

frame2 = tk.Frame() 
frame2.pack() 

label = tk.Label(frame2, text='Sample3') 
label.pack() 

entry = tk.Entry(frame2) 
entry.pack() 

label = tk.Label(frame2, text='Title', width=15) 
label.pack() 

txt = tk.Text(frame2) 
txt.pack() 

root.mainloop() 

また、gridマネージャがあります、覚えておいてください:このスニペットを試してみてください、このような何かを表現するために

!このマネージャーを使用すると、レイアウトを表として扱うことができますので、試してみてください!

+0

「分裂と征服」が本当に意味することは分かっていますが、私は応答に感謝します。私はそれで私の問題を解決することができます。グリッドマネージャーのおかげで、以前はそれについて聞いていませんでした。 – Daniel

関連する問題