Как установить размер блока с текстом в пикселях
очень нужно, что бы размер блока с текстом был именно в пикселях, а не в буквах. Функция place() в моём коде не подходит (либо я просто не знаю как сделать так, что бы всё работало корректно)
Итак, задумка такая - даём программе длину и ширину прямоугольника, программа считывает текущий размер окна и вычисляет сторону квадрата, из которых состоит весь прямоугольник, таким образом, что бы можно было составить прямоугольник из этих квадратов, и что бы он был на весь экран. Скорее всего вы ничего не поняли, что я сейчас сказал, но сейчас объясню на примере.
Допустим: входные данные 8, 5 (то есть нужный нам прямоугольник шириной 8 и высотой 5 квадратов). Ширина окна: 1180x720. Мы делим 1180 // 8 = 147, потом делим 720 // 5 = 144. полученные цифры почти совпадают, но меньшее из них - 144. И ведь действительно, прямоугольник получится шириной 144 * 8 = 1152 и высотой 144 * 5 = 720 пикселей, и прямоугольник по максимуму занимает всё пространство. Осталось только разместить квадраты со стороной 144 пикселя.
К слову, почти весь код я уже написал:
import tkinter as tk
def side():
global main_frame
x, y = 8, 5
side_square = min(int(window.geometry().split("+")[0].split("x")[0]) // x, int(window.geometry().split("+")[0].split("x")[1]) // y)
print(side_square)
main_frame.destroy()
main_frame = tk.Frame()
main_frame.grid()
for number_line in range(y):
for number_square in range(x):
space = tk.Label(main_frame, text="square", width=side_square, height=side_square, bg="green")
space.grid(column = number_square, row = number_line)
window = tk.Tk()
window.geometry("1180x720")
main_frame = tk.Frame()
main_frame.grid()
btn = tk.Button(main_frame, text="Узнать длину стороны квадрата", command=side)
btn.grid()
window.mainloop()
Если нажать кнопку, то в консоли выдастся сторона квадрата в пикселях, а вот при расстановке этих квадратов, они получаются вытянутыми вниз и огромными. Разумеется я понимаю, что ширина и высота блока с тестом указывается в буквах, но очень хотелось бы сделать из них пиксели. Что нибудь на подобие width=pixels(side_square).
Ответы (1 шт):
Рабочий пример:
import tkinter as tk
window = tk.Tk()
window.geometry("1180x720")
text_frame = tk.Frame(window, width=1100, height=700)
text_frame.pack()
# Запрещаем вложенным во фрейм виджетам менять размер фрейма под себя
# (уменьшать или увеличивать):
text_frame.pack_propagate(False)
text = tk.Text(text_frame)
# Текстовое поле будет расширяться до размера фрейма, в котором оно лежит:
text.pack(expand=True, fill='both')
window.mainloop()