web-dev-qa-db-ja.com

tkinterでボタンを配置するにはどうすればよいですか?

ここに2つのボタンがあるプログラムがあります。現在、ボタンは真下にあるため、これらのボタンの間にスペースができるように位置を変更しようとしています。それらの位置を変更するにはどうすればよいですか?

def menu():
    import tkinter
    window=tkinter.Tk()
    window.title('Lightning Parties')
    window.configure(background='turquoise')
    lbl=tkinter.Label(window, text='Welcome to Lightning Parties!', fg='purple', bg='turquoise', font=('comicsans', 14))
    lbl.pack()

    #here are the buttons
    lbl=tkinter.Button(window, text='Returning customer options', fg='white',   bg='purple', font=('comicsans', 12),command=combine_funcs(window.destroy, customer_login))
    lbl.pack()

    lbl=tkinter.Button(window, text='Register as a customer', fg='white', bg='purple', font=('comicsans', 12),command=combine_funcs(window.destroy, customer_details))
    lbl.pack()

どんな助けでも喜んでいただければ幸いです、ありがとう!

3
brenda

実際、前学期には、先生から提供されたプロジェクトであるTkinterアプリケーションも作成しました。そこで、PythonのチュートリアルWebサイトにアクセスして、ウィジェットを出力画面に配置する3つの方法を見つけます。3つの方法は次のとおりです。

 1. Pack()
 2. Grid()
 3. Place() #the best method over Pack() and Grid()

Place()メソッドは、xとyの形式で座標を取ります。詳細については、このリンクを参照してください https://www.tutorialspoint.com/python/python_gui_programming.htm

https://www.tutorialspoint.com/python/tk_place.htm

指定されたリンクのページの下部を参照してください。Place()メソッドは、適切な引数で定義されています。 Pack()やGrid()よりもPlace()メソッドを使用します。これは、htmlで使用するCSSのように機能し、(width、height)の値を取り、ウィジェットを任意の場所に配置するためです。

あなたの答えを見つけたら、親指を立てていただければ幸いです。

1
babygame0ver

私のはこのようになります:

object1 = Tk()
actionBtn = Button(object1, text="Enter", width=15, height=2, command=quit).place(x=0, y=0)

#.place() is the best thing to use, x and y determine the location in terms of geometry.

拡張子が.pngの画像を追加することもでき、次のようになります。

buttonEnter = PhotoImage(file="buttonEnter.png") #image file must be inserted 
buttonEnter1 = Button(object1, image=buttonEnter, width=20, height=4).place(x=0, y=0) 
1
Mawty

Tkinterがこの問題を解決する(または少なくとも簡単に解決する)明示的な方法があるかどうかは完全にはわかりませんが、私の提案はgrid()メソッドの使用を開始することです。
pack()よりも少し多くのコードが必要です(詳細については、effbotの記事を参照してください)が、はるかに用途が広いです。
繰り返しになりますが、この問題を直接解決できるとは思いませんが、より用途が広く、GUIを正しく構成し、stickyキーワードを適切に使用すると、多くの場合、適切な間隔が与えられます。 。

0
EriktheRed

ボタン間の垂直方向のスペースを増やすには、padyメソッドでpack引数を使用します:lbl.pack(pady=10)

水平方向の間隔には、padx引数があります。これは、gridメソッドでも機能します。

0
j_4321