from tkinter import *
root = Tk()
root.geometry('500x600')
f1 = Frame(root, width=400, height=100, bg="red").pack()
f2 = Frame(root, width=400, height=100, bg="black").pack()
f3 = Frame(root, width=400, height=100, bg="yellow").pack()
b1 = Button(f1, text ='кнопка для фрейма №1', bg ='pink').pack()
b2 = Button(f2, text ='кнопка для фрейма №2', bg ='blue').pack()
b3 = Button(f3, text ='кнопка для фрейма №3', bg ='silver').pack()
root.mainloop()
from tkinter import *
root=Tk()
frame1=Frame(root,bg='green',bd=100)
frame2=Frame(root,bg='red',bd=100)
button1=Button(frame1,text='Первая кнопка')
button2=Button(frame2,text='Вторая кнопка')
frame1.pack()
frame2.pack()
button1.pack()
button2.pack()
root.mainloop()
Не получается разместить виджеты в фрейм
f1
- это результат вызова метода pack()
, который НЕ возвращает ссылку на фрэйм, а возвращает None
. Это базовый синтаксис питона, переменной присваивается результат вызова функции.Не могу задать высоту и ширину фрейма
.grid(...)
- больше строк кода, но более гибкий и контролируемый результат. Грид - это сетка, у нее есть параметр минимального размера строки/столбца.import *
- это плохо. f1 = Frame(root, width=400, height=100, bg="red").pack()
f1 = Frame(root, width=400, height=100, bg="red")
f1..pack()
f1.propagate(False)
from tkinter import *
root = Tk()
root.geometry('500x600')
f1 = Frame(root, width=400, height=100, bg="red")
f1.pack()
f1.propagate(False)
f2 = Frame(root, width=400, height=100, bg="black")
f2.pack()
f2.propagate(False)
f3 = Frame(root, width=400, height=100, bg="yellow")
f3.pack()
f3.propagate(False)
b1 = Button(f1, text ='кнопка для фрейма №1', bg ='pink').pack()
b2 = Button(f2, text ='кнопка для фрейма №2', bg ='blue').pack()
b3 = Button(f3, text ='кнопка для фрейма №3', bg ='silver').pack()
root.mainloop()
В приведенном коде f1 - это результат вызова метода pack(), который НЕ возвращает ссылку на фрэйм, а возвращает None. Это базовый синтаксис питона, переменной присваивается результат вызова функции.