【问题标题】:Can I adjust the size of message box created by tkMessagebox?我可以调整 tkMessagebox 创建的消息框的大小吗?
【发布时间】:2015-02-04 18:19:15
【问题描述】:

我想用固定宽度的 tkMessagebox 创建信息对话。我在 tkMessagebox.showinfo 函数中没有看到任何可以处理此问题的选项。有什么办法吗?谢谢!

【问题讨论】:

    标签: python tkmessagebox


    【解决方案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

    【讨论】:

    • 谢谢。这有帮助。您的代码中有两个小问题: 1. 对我来说是 Tkinter,而不是 tkinter。不知道是否有任何使用 tkinter 的发行版。 2. 代码需要master.mainloop() 才能工作。更好地为未来的读者编辑它。
    • 我正在运行的版本使用 tkinter 而不是 Tkinter,但我知道不同版本的 tkinter 和 python 使用不同的模块定义,我已经对其进行了修改以包含 .mainloop()
    • 另外,您可能应该将问题的标题更改为“大小”而不是“侧面”
    • 我明白了。我还没有切换到 python 3。顺便说一句,在尝试 TopLevel 时。我发现如果我把东西放进去,任何高度或宽度都会被覆盖。只有几何有效。这是真的?而且我仍然不知道如何有一个固定宽度的消息对话框,而高度是由消息量调整的。你知道怎么做吗?谢谢!
    • 是的,如果你在其中打包或网格化某些东西,那么 tkinter 会忽略 -width 和 -height 参数。所以使用 .geometry 是我发现的最简单的方法。就固定某个轴上的窗口大小而言,它的作用与普通窗口非常相似。这应该可以帮助你:stackoverflow.com/questions/21958534/…
    【解决方案2】:

    .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”是以英寸为单位的线条长度)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 2011-10-24
      相关资源
      最近更新 更多