Могу ли я настроить размер окна сообщения, созданного tkMessagebox?
Я хочу создать информационный диалог с tkMessagebox с фиксированной шириной. Я не видел никаких опций в функции tkMessagebox.showinfo, которые могли бы справиться с этим. Там в любом случае? Спасибо!
1 ответ
Насколько я знаю, вы не можете изменить размер tkMessageBox, но если вы готовы приложить усилия, вы можете создавать собственные диалоги.
Этот маленький скрипт демонстрирует это:
from tkinter import * #If you get an error here, try Tkinter not tkinter
def Dialog1Display():
Dialog1 = Toplevel(height=100, width=100) #Here
def Dialog2Display():
Dialog2 = Toplevel(height=1000, width=1000) #Here
master=Tk()
Button1 = Button(master, text="Small", command=Dialog1Display)
Button2 = Button(master, text="Big", command=Dialog2Display)
Button1.pack()
Button2.pack()
master.mainloop()
Когда вы запустите скрипт, вы должны увидеть главное окно с двумя кнопками, после нажатия одной из кнопок вы создадите TopLevel
окно, которое можно изменить, как показано в сценарии, обозначенном#Here
, Эти окна верхнего уровня действуют так же, как стандартные окна и могут быть изменены и иметь дочерние виджеты. Также, если вы пытаетесь упаковать или преобразовать дочерние виджеты в TopLevel
окно, то вам нужно будет использовать .geometry
не -width
или же -height
, это будет примерно так:
from tkinter import *
def Dialog1Display():
Dialog1 = Toplevel()
Dialog1.geometry("100x100")
def Dialog2Display():
Dialog2 = Toplevel()
Dialog2.geometry("1000x1000")
master=Tk()
Button1 = Button(master, text="Small", command=Dialog1Display)
Button2 = Button(master, text="Big", command=Dialog2Display)
Button1.pack()
Button2.pack()
master.mainloop()
Надеюсь, я помог, попробуйте прочитать на TopLevel
виджет здесь: http://effbot.org/tkinterbook/toplevel.htm
.option_add может работать только в операционных системах Linux, но вы можете управлять шрифтом, переносом строк и шириной поля:
root.option_add('*Dialog.msg.font', 'Helvetica 24')
root.master.option_add('*Dialog.msg.width', 34)
root.master.option_add("*Dialog.msg.wrapLength", "6i")
(где "6i" - длина линии в дюймах)