Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 11, 2014 06:27:21

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Окна Tk не вписываются в экран

Мне надо создать 3 окна Tkinter с кнопкой в конце
Есть примерно такой скрипт:

#!/usr/bin/python3
import tkinter as tk
def callback_sel():
	top.destroy()
root=tk.Tk()
top=tk.Toplevel(root)
# frames
frame1=tk.Frame(top)
frame2=tk.Frame(top)
frame3=tk.Frame(top)
# text widgets
txt1=tk.Text(frame1)
txt2=tk.Text(frame2)
txt3=tk.Text(frame3)
# button
button=tk.Button(frame3,text='Выделенное',command=callback_sel)
button.bind('<Return>', lambda e: callback_sel())
button.pack(side='bottom')
# pack text widgets
txt1.pack()
txt2.pack()
txt3.pack()
# pack frames
frame1.pack()
frame2.pack()
frame3.pack()
top.wait_window()
root.mainloop()
На большом мониторе все отображается, хотя и не очень красиво (фреймы имеют разный размер), а вот когда я пробую тот же скрипт на нетбуке, то создаваемое окно просто не вписывается в экран (видны только 2 фрейма, приходится тянуть за границу окна, чтобы увидеть 3-й фрейм). Можно ли это как-нибудь обойти и сделать так, чтобы масштабировалось до пределов экрана при любом разрешении (желательно, оставив метод pack)?

Офлайн

#2 Июнь 11, 2014 09:00:56

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Окна Tk не вписываются в экран

Проблема из-за использования настроек по умолчанию для Text.
http://younglinux.info/tkinter/text.php

Офлайн

#3 Июнь 11, 2014 10:38:53

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Окна Tk не вписываются в экран

Можно получить размеры экрана и использовать их для определения размеров базового root.
Изменить root можно методом root.geometry(“400х400+100+100”)
Получить размеры экрана можно методом root.winfo_screenwidth() и root.winfo_screenheight().
Только желательно эти размеры, при отображении уменьшить на 4 пикселя. Использование полноэкранного размера в винде иногда вызывает ошибку.

P.S. Будут вопросы - пишите…

Офлайн

#4 Июнь 11, 2014 10:40:21

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Окна Tk не вписываются в экран

Shaman
Проблема из-за использования настроек по умолчанию для Text.http://younglinux.info/tkinter/text.php
Большое спасибо! Помогло явное проставление height для Text. Сделал так:

#!/usr/bin/python3
import tkinter as tk
def callback_sel():
	top.destroy()
root=tk.Tk()
top=tk.Toplevel(root)
top.attributes('-zoomed',True)
frame1=tk.Frame(top)
frame2=tk.Frame(top)
frame3=tk.Frame(top)
txt1=tk.Text(frame1,height=15,wrap='word')
txt2=tk.Text(frame2,height=15,wrap='word')
txt3=tk.Text(frame3,height=15,wrap='word')
# button
button=tk.Button(frame3,text='Выделенное',command=callback_sel)
button.bind('<Return>', lambda e: callback_sel())
button.pack(side='bottom')
# pack text widgets
txt1.pack(expand='yes',fill='both')
txt2.pack(expand='yes',fill='both')
txt3.pack(expand='yes',fill='both')
frame1.pack(expand='yes',fill='both')
frame2.pack(expand='yes',fill='both')
frame3.pack(expand='yes',fill='both')
top.wait_window()
root.mainloop()

Отредактировано vanvanov (Июнь 11, 2014 10:44:38)

Офлайн

#5 Июнь 11, 2014 10:42:01

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Окна Tk не вписываются в экран

4kpt_II
Можно получить размеры экрана и использовать их для определения размеров базового root.Изменить root можно методом root.geometry(“400х400+100+100”)Получить размеры экрана можно методом root.winfo_screenwidth() и root.winfo_screenheight().Только желательно эти размеры, при отображении уменьшить на 4 пикселя. Использование полноэкранного размера в винде иногда вызывает ошибку.P.S. Будут вопросы - пишите…
Я уже пробовал менять geometry для окна. При этом размер окна действительно менялся, но виджет в него не влезал

Офлайн

#6 Июнь 11, 2014 10:49:21

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Окна Tk не вписываются в экран

Ну так задайте размер виджета.
Можно предварительно узнать его размер и уменьшить в случае необходимости.
zoomed это костыль. Если программа должна отображаться не на весь экран?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version