2016-04-01 17 views
0

.pack()メソッドを使用して、すべてのラベルと入力ボックスを画面の中央に移動しようとしています。私は使用してみましたPython 2.7 - .pack()を使用してTkinterフレームのウィジェットをセンタリングする

anchor = CENTER 

と.place()メソッドを使用していましたが、すべてが中央で重複していました。すべてのウィジェットをTkinterフレームの中央に単純にシフトするにはどうしたらいいですか?

from Tkinter import * 

root = Tk() 
root.minsize(width = 500, height = 500) 
root.wm_title("Email Program v1.0") 

def callback(): 
    print ("Hello!") 

#sign in - email 
usernameLabel = Label(root, text = "Email:") 
usernameLabel.pack(padx = 0, pady = 0) 

usernameInput = Entry(root) 
usernameInput.pack() 
usernameInput.focus_set() 

passwordLabel = Label(root, text = "Password:") 
passwordLabel.pack() 

passwordInput = Entry(root, show = "*", width = 20) 
passwordInput.pack() 
passwordInput.focus_set() 

#submit email credentials - connect to the server 
submitEmail = Button(root, text = "Submit", fg = "black", width = 10, command = callback) 
submitEmail.pack() 

root.mainloop() 
+0

どのようにそれらのすべてが中央に配置されていても重なり合わないと思いますか? 2つのものが中心に置かれている場合、それらは定義上お互いの上にあります。 – zondo

+0

このコードは、pack(anchor = "center")と一緒に私のマシン上で動作します。問題を再現するには、いくつかのコード/説明が必要です。 –

+0

中央にちょうど水平にまたは垂直に? –

答えて

0

簡単な解決策は、フレーム内のすべてのウィジェットを入れ、その後、フレームを中央にある:

は、ここに私のコードです。

1

3つのフレームを使用して2つのラベルとエントリを中央に配置することができました。

frame1 = Frame(root) 
frame1.pack(expand=True) 

frame2 = Frame(root) 

usernameLabel = Label(frame2, text = "Email:") 
usernameLabel.pack(padx = 0, pady = 0) 

usernameInput = Entry(frame2) 
usernameInput.pack() 
usernameInput.focus_set() 

passwordLabel = Label(frame2, text = "Password:") 
passwordLabel.pack() 

passwordInput = Entry(frame2, show = "*", width = 20) 
passwordInput.pack() 
passwordInput.focus_set() 
submitEmail = Button(frame2, text = "Submit", fg = "black", width = 10, command\ 
= callback) 
submitEmail.pack() 

frame2.pack(anchor=CENTER) 

frame3 = Frame(root) 
frame3.pack(expand=True) 
関連する問題