Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Помогите новичку разобраться с компоновкой виджетов в окне Tkinter [RSS Feed]

#1 Май 14, 2022 13:30:35

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите новичку разобраться с компоновкой виджетов в окне Tkinter

Мне нужно чтобы при растягивании окна все виджеты оставались на своих местах, лишь виджеты lbl и txt должны расширяться по горизонтали. Я заставил виджет lbl не съезжать со своего места, но виджет txt упорно лезет центрироваться по вертикали. А кнопка btn2 тащится за нижнем краем окна. См. вложение.

Как их всех заставить подчиняться и сидеть на своих местах смирно? Попиксельное позиционирование, пожалуйста, не предлагайте.

 import tkinter as tk
class Window_main(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.title("Окно")
        self.padX = 2
        self.padY = 2
        
        self.frame1 = tk.Frame()
        self.frame1.pack(fill = "both")
        self.btn = tk.Button(master = self.frame1,
                                    text = "Кнопка",
                                    font = ("", "12", "bold"))
        self.btn.pack(side = "left", anchor = "n", padx = self.padX, pady = self.padY)
        self.lbl = tk.Label(master = self,
                            text = "",
                            font = "12",
                            relief = tk.SUNKEN,
                            width = 50,
                            anchor = "w",
                            bg = "white",
                            bd = 1)
        self.lbl.pack(side = "top", anchor = "n", fill = tk.X, expand = True, padx = self.padX, pady = self.padY)
        self.txt = tk.Text(master = self,
                           font = ("Courier New", "12"),
                           relief = tk.SUNKEN,
                           width = 50,
                           height = 11,
                           bg = "white",
                           bd = 1)
        self.txt.bind("<Key>", lambda a: "break")
        self.txt.pack(side = "top", anchor = "n", fill = tk.X, expand = True, padx = self.padX, pady = self.padY)
        self.btn2 = tk.Button(master = self,
                              font = ("", "12", "bold"),
                              text = "Кнопка2")
        self.btn2.pack(side = "left", anchor = "n", padx = self.padX, pady = self.padY)
if __name__ == "__main__":
    m = Window_main()
    m.mainloop()

Прикреплённый файлы:
attachment Безымянный.png (52,2 KБ)

Офлайн

#2 Май 14, 2022 20:23:39

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1352
Репутация: +  118  -
Профиль   Отправить e-mail  

Помогите новичку разобраться с компоновкой виджетов в окне Tkinter

  
import tkinter as tk
class Window_main(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.title("Окно")
        self.padX = 2
        self.padY = 2
        self.frame1 = tk.Frame()
        self.frame1.pack(fill="both")
        self.btn = tk.Button(master=self.frame1,
                             text="Кнопка",
                             font=("", "12", "bold"))
        self.btn.pack(side="left", anchor="n", padx=self.padX, pady=self.padY)
        self.frame2 = tk.Frame()
        self.frame2.pack(fill='both')
        self.lbl = tk.Label(master=self.frame2,
                            text="",
                            font="12",
                            relief=tk.SUNKEN,
                            width=50,
                            anchor="w",
                            bg="white",
                            bd=1)
        self.lbl.pack(anchor="n", fill=tk.X, expand=True, padx=self.padX, pady=self.padY)
        self.frame3 = tk.Frame()
        self.frame3.pack(fill='both')
        self.txt = tk.Text(master=self.frame3,
                           font=("Courier New", "12"),
                           relief=tk.SUNKEN,
                           width=50,
                           height=11,
                           bg="white",
                           bd=1)
        self.txt.bind("<Key>", lambda a: "break")
        self.txt.pack(anchor="n", fill=tk.X, expand=True, padx=self.padX, pady=self.padY)
        self.btn2 = tk.Button(master=self,
                              font=("", "12", "bold"),
                              text="Кнопка2")
        self.btn2.pack(side="left", anchor="n", padx=self.padX, pady=self.padY)
if __name__ == "__main__":
    m = Window_main()
    m.mainloop()

Офлайн

#3 Май 15, 2022 10:40:04

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите новичку разобраться с компоновкой виджетов в окне Tkinter

Т.е. для каждого виджета свой фрейм?
Всё равно не совсем соображаю, что именно влияет на позиционирование. Но, таки, будучи каждый в своём фрейме, виджеты выстроились так как мне надо.

Спасибо.

Офлайн

  • Начало
  • » GUI
  • » Помогите новичку разобраться с компоновкой виджетов в окне Tkinter[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version