Форум сайта python.su
Мне нужно чтобы при растягивании окна все виджеты оставались на своих местах, лишь виджеты 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()
Прикреплённый файлы:
Безымянный.png (52,2 KБ)
Офлайн
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()
Офлайн
Т.е. для каждого виджета свой фрейм?
Всё равно не совсем соображаю, что именно влияет на позиционирование. Но, таки, будучи каждый в своём фрейме, виджеты выстроились так как мне надо.
Спасибо.
Офлайн