Форум сайта python.su
Мне надо создать 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()
Офлайн
Проблема из-за использования настроек по умолчанию для Text.
http://younglinux.info/tkinter/text.php
Офлайн
Можно получить размеры экрана и использовать их для определения размеров базового root.
Изменить root можно методом root.geometry(“400х400+100+100”)
Получить размеры экрана можно методом root.winfo_screenwidth() и root.winfo_screenheight().
Только желательно эти размеры, при отображении уменьшить на 4 пикселя. Использование полноэкранного размера в винде иногда вызывает ошибку.
P.S. Будут вопросы - пишите…
Офлайн
ShamanБольшое спасибо! Помогло явное проставление height для Text. Сделал так:
Проблема из-за использования настроек по умолчанию для Text.http://younglinux.info/tkinter/text.php
#!/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)
Офлайн
4kpt_IIЯ уже пробовал менять geometry для окна. При этом размер окна действительно менялся, но виджет в него не влезал
Можно получить размеры экрана и использовать их для определения размеров базового root.Изменить root можно методом root.geometry(“400х400+100+100”)Получить размеры экрана можно методом root.winfo_screenwidth() и root.winfo_screenheight().Только желательно эти размеры, при отображении уменьшить на 4 пикселя. Использование полноэкранного размера в винде иногда вызывает ошибку.P.S. Будут вопросы - пишите…
Офлайн
Ну так задайте размер виджета.
Можно предварительно узнать его размер и уменьшить в случае необходимости.
zoomed это костыль. Если программа должна отображаться не на весь экран?
Офлайн