kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Jace Browning
Jace Browning
Вопрос

Как установить минимальный размер окна в tkinter?

Насколько я понимаю, после инициализации всех фреймов и виджетов в методе __init__, окно tkinter изменяет размер, чтобы вместить все эти компоненты.

Я хотел бы установить инициализированный размер окна как его минимальный размер. Я хочу иметь возможность максимизировать и масштабировать окно, но я никогда не хочу, чтобы окно было настолько маленьким, чтобы начать скрывать виджеты.

Как мне этого добиться?

22 2012-05-04T12:33:14+00:00 3
Программирование
tkinter
Этот вопрос имеет 1 ответ на английском, чтобы прочитать их войдите в свой аккаунт.
Решение / Ответ
John  Gaines Jr.
John Gaines Jr.
4-го мая 2012 в 3:49
2012-05-04T15:49:47+00:00
Дополнительно
Источник
Редактировать
#16106226

Вы также можете принудительно выполнить обновление сразу, не входя в mainloop, используя что-то вроде этого:

root = Tk()
# set up widgets here, do your grid/pack/place
# root.geometry() will return '1x1+0+0' here
root.update()
# now root.geometry() returns valid size/placement
root.minsize(root.winfo_width(), root.winfo_height())

Описание update() в effbot tkinterbook:

Обрабатывает все ожидающие события, вызывает обратные вызовы событий, завершает любое ожидающее управление геометрией, перерисовывает виджеты по мере необходимости, и вызывает все незавершенные задачи. Этот метод следует использовать с осторожностью, так как он может привести к действительно неприятным условиям гонки, если его вызвать из неправильного > места (изнутри). месте (например, из обратного вызова события или из функции. которая может каким-либо образом быть вызвана из обратного вызова события, и т.д.). В случае сомнениях, используйте update_idletasks вместо этого.

Я часто использовал это, когда пытался понять, как сделать такие вещи, как получение размера/положения виджетов перед тем, как перейти в основной цикл.

John  Gaines Jr.
John Gaines Jr.
Редактировал ответ 4-го мая 2012 в 5:16
40
0
Jace Browning
Jace Browning
4-го мая 2012 в 2:11
2012-05-04T14:11:48+00:00
Дополнительно
Источник
Редактировать
#16106225

Я понял это:

def __init__(self, master):
    ...
    self.master.update_idletasks()
    self.master.after_idle(lambda: self.master.minsize(self.master.winfo_width(), self.master.winfo_height()))
2
0
 miksiii
miksiii
25-го августа 2014 в 12:06
2014-08-25T12:06:38+00:00
Дополнительно
Источник
Редактировать
#16106227
root = Tk()

С момента создания корневого окна. Корневое окно - это главное окно приложения в наших программах. Оно имеет строку заголовка и границы. Они предоставляются оконным менеджером. Оно должно быть создано до появления других виджетов.

root.geometry("250x150+300+300")

Метод geometry() задает размер окна и позиционирует его на экране. Первые два параметра - это ширина и высота окна. Последние два параметра - экранные координаты x, y.

app = Example(root)

Здесь мы создаем экземпляр класса приложения.

root.mainloop()  

Наконец, мы входим в основной цикл. С этого момента начинается обработка событий. Основной цикл получает события от оконной системы и рассылает их виджетам приложения. Он завершается, когда мы нажимаем на кнопку закрытия панели заголовка или вызываем метод quit().

введите здесь описание изображения

Надеюсь, вы нашли это полезным.

-4
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 5 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией