簡體   English   中英

Python Tkinter框架對齊

[英]Python tkinter frame alignment

我的GUI

如何將我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM