Могу ли я настроить размер окна сообщения, созданного 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" - длина линии в дюймах)

Другие вопросы по тегам