[英]Python tkinter frame alignment
如何將我的cb_frame
理想地垂直放置,並向左對齊? 當某個復選按鈕之后的文本的長度比其他文本長時,則此復選按鈕相對於其他文本是不均勻的。 我在cb_frame
使用place
而不是pack
,因為我不知道如何將帶有checkbuttons的框架按pack
放在這個位置。
import Tkinter
class MyGUI:
def __init__(self):
self.main_window = Tkinter.Tk()
self.main_window.title("My GUI")
self.main_window.geometry("520x350+500+480")
self.first_frame = Tkinter.Frame()
self.second_frame = Tkinter.Frame()
self.third_frame = Tkinter.Frame()
self.cb_frame = Tkinter.Frame()
self.first_frame.pack(fill="x", padx="3", pady="3")
self.second_frame.pack(fill="x", padx="3", pady="3")
self.third_frame.pack(fill="x", padx="3", pady="3")
self.cb_frame.place(x="220")
self.btn_1 = Tkinter.Button(self.first_frame, text="Button 1", bg="blue", width="12", height="4", command=None)
self.btn_2 = Tkinter.Button(self.first_frame, text="Button 2", bg="blue", width="12", height="4", command=None)
self.btn_3 = Tkinter.Button(self.second_frame, text="Button 3", bg="green", width="12", height="4", command=None)
self.btn_4 = Tkinter.Button(self.second_frame, text="Button 4", bg="green", width="12", height="4", command=None)
self.btn_5 = Tkinter.Button(self.third_frame, text="Button 5", bg="orange", width="12", height="4", command=None)
self.btn_6 = Tkinter.Button(self.third_frame, text="Button 6", bg="orange", width="12", height="4", command=None)
self.btn_1.pack(side="left")
self.btn_2.pack(side="left", padx="2")
self.btn_3.pack(side="left")
self.btn_4.pack(side="left", padx="2")
self.btn_5.pack(side="left")
self.btn_6.pack(side="left", padx="2")
self.cb_var1 = Tkinter.IntVar()
self.cb_var2 = Tkinter.IntVar()
self.cb_var3 = Tkinter.IntVar()
self.cb_var4 = Tkinter.IntVar()
self.cb_var1.set(0)
self.cb_var2.set(0)
self.cb_var3.set(0)
self.cb_var4.set(0)
self.cb1 = Tkinter.Checkbutton(self.cb_frame, text="1000", variable=self.cb_var1).pack()
self.cb2 = Tkinter.Checkbutton(self.cb_frame, text="2000", variable=self.cb_var2).pack()
self.cb3 = Tkinter.Checkbutton(self.cb_frame, text="3000", variable=self.cb_var3).pack()
self.cb4 = Tkinter.Checkbutton(self.cb_frame, text="over 4000", variable=self.cb_var4).pack()
Tkinter.mainloop()
my_gui = MyGUI()
您的cb_frame
已對齊。 是未對齊的復選框。 默認情況下,它們居中,並且您不會覆蓋默認值。 一個簡單的解決方法是使用anchor
屬性:
self.cb1 = Tkinter.Checkbutton(...).pack(anchor="w")
self.cb2 = Tkinter.Checkbutton(...).pack(anchor="w")
self.cb3 = Tkinter.Checkbutton(...).pack(anchor="w")
self.cb4 = Tkinter.Checkbutton(...).pack(anchor="w")
順便說一句,當您執行x = Checkbutton(...).pack(...)
, x
始終為None
。 這是因為pack(...)
返回None
。 就像良好的編程一樣,應該將小部件的創建與小部件的布局分開,但是如果需要保留對小部件的引用,則必須將它們分開:
self.cb1 = Tkinter.Checkbutton(...)
self.cb2 = Tkinter.Checkbutton(...)
...
self.cb1.pack(anchor="w")
self.cb2.pack(anchor="w")
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.