2016-02-08 1 views
0

Существует ли «стандартный» способ обеспечения того, чтобы отображаемое окно было достаточно широким, чтобы отображать заголовок окна?Окно tkinter не достаточно широкое, чтобы отображать заголовок окна

import tkinter as tk 
root = tk.Tk() 
root_f = tk.Frame(root) 
root.title('Long Window Title Containing Much Text') 
text_f = tk.Frame(root_f) 
text_l = tk.Label(text_f, text='Short text') 

root_f.grid() 
text_f.grid() 
text_l.grid() 

root.geometry('+{}+{}'.format(100, 100)) 
root.mainloop() 
root.quit() 

Когда я использую метод winfo, чтобы получить ширину корневой (или текст) кадров они дают размер текста не размер окна достаточно широки, чтобы отобразить весь заголовок окна.

Я знаю, что это должно быть что-то простое, но я не вижу его.

Thanks

+0

Работает на MacOS X с Python 3.4.3 все работает как шарм. Вы пытались прокомментировать строку 'root.geometry()', чтобы включить автоматическое масштабирование окна? – albert

+0

Спасибо, Альберт. Интересно, хотя на моем Mac OSX 10.7.5, работающем на python 3.4, все, что я получаю, - очень маленькое окно, достаточно большое, чтобы держать текст «Короткие тексты». Странный. Спасибо хоть. – Garry

+0

О, ты определенно прав. Не видел этого. Я думал, что у вас проблемы с текстом «Short Text». Заголовок окна также не отображается в моей системе. Извините за это ... – albert

ответ

0

Нет, стандартного способа нет. Tkinter не знает, как долго заголовок находится в заголовке. Диспетчер ОС/окон полностью контролирует эту часть окна и не предоставляет никакой независимой от платформы способ получения этой информации.

Вам нужно будет знать не только шрифт, используемый ОС для названий окон, но также и какие-либо другие украшения (например: кнопки, изображения и т. Д.), Которые появляются в области заголовка.

Если у вас все в порядке с предположением, что шрифт совпадает с шрифтом tkinter по умолчанию, вы можете использовать способность tkinter измерять длину строки в заданном шрифте методом measure объекта шрифта.

+0

Спасибо, Брайан, шрифт всей мудрости, как обычно :). Мне кажется немного странным, что нет никакого знания tkinter об этом, но, как вы можете видеть сверху, я нахожу способ сделать это. Еще раз спасибо. – Garry