【问题标题】:Message widget not filling frame using tkinter消息小部件未使用 tkinter 填充框架
【发布时间】:2019-10-18 11:36:28
【问题描述】:

我正在创建一个简单的用户对话窗口,上面有一个基本文本,下面有一个树形视图,它为用户提供了几个选择。底部的按钮用于确认选择。

现在我无法获取用于显示说明的消息小部件来填充我为其创建的框架。同时,Treeview 小部件会按照我的意愿填充 Frame。

许多关于其他 StackOverflow 问题的建议解决方案指出,放置 my_message.pack(fill=tk.X, expand=True) 应该可以工作。在我的情况下没有。在不同的情况下,建议输入my_frame.columnconfigure(0, weight=1),这也无济于事。

代码如下:

import tkinter as tk
from tkinter import ttk

class MessageBox(object):
    """ Adjusted code from StackOverflow #10057662. """

    def __init__(self, msg, option_list):

        root = self.root = tk.Tk()
        root.geometry("400x400")
        root.title('Message')
        self.msg = str(msg)
        frm_1 = tk.Frame(root)
        frm_1.pack(expand=True, fill=tk.X, ipadx=2, ipady=2)
        message = tk.Message(frm_1, text=self.msg)
        message.pack(expand=True, fill=tk.X) # <------------------------------------ This doesn't show the desired effect!
        frm_1.columnconfigure(0, weight=1)

        self.tree_view = ttk.Treeview(frm_1)
        self.tree_view.heading("#0", text="Filename", anchor=tk.CENTER)
        for idx, option in enumerate(option_list):
            self.tree_view.insert("", idx+1, text=option)
        self.tree_view.pack(fill=tk.X, padx=2, pady=2)



choice_msg = "Long Test string to show, that my frame is unfortunately not correctly filled from side to side, as I would want it to."
choices = ["Test 1", "Test 2", "Test 3"]
test = MessageBox(choice_msg, choices)
test.root.mainloop()

我正在慢慢发疯,因为我知道可能有一些非常基本的东西会否决小部件的正确定位,但我一直在尝试不同的 StackOverflow 解决方案和浏览文档几个小时,但没有运气。

【问题讨论】:

  • 消息确实在 x 方向填充帧。你可以通过给它一个独特的背景来看到这一点。您的问题是文本没有填充小部件。
  • @Bryan Oakley 谢谢你的提示,我知道这是我忽略的非常明显的事情..

标签: python-3.x tkinter widget message pack


【解决方案1】:

尝试在tk.Message 构造函数中设置message 的宽度,如下所示:

    message = tk.Message(frm_1, text=self.msg, width=400-10)  # 400 - is your window width
    message.pack()  # In that case you can delete <expand=True, fill=tk.X>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2021-05-29
    • 2015-04-09
    相关资源
    最近更新 更多