消息小部件未使用 tkinter 填充框架
Message widget not filling frame using tkinter
我正在创建一个简单的用户对话框 window,顶部是基本文本,下面是一个树视图,其中有一列,为用户提供了几个选择。底部的按钮用于确认选择。
现在,我无法获取用于显示说明的消息小部件来填充我为其创建的框架。同时,Treeview 小部件按照我的意愿填充框架。
许多针对其他 Whosebug 问题提出的解决方案指出,放置 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 Whosebug #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()
我慢慢地发疯了,因为我知道可能有一些非常基本的东西会否决小部件的正确定位,但我已经尝试了不同的 Whosebug 解决方案并浏览了几个小时的文档,但没有成功。
尝试在 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>
我正在创建一个简单的用户对话框 window,顶部是基本文本,下面是一个树视图,其中有一列,为用户提供了几个选择。底部的按钮用于确认选择。
现在,我无法获取用于显示说明的消息小部件来填充我为其创建的框架。同时,Treeview 小部件按照我的意愿填充框架。
许多针对其他 Whosebug 问题提出的解决方案指出,放置 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 Whosebug #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()
我慢慢地发疯了,因为我知道可能有一些非常基本的东西会否决小部件的正确定位,但我已经尝试了不同的 Whosebug 解决方案并浏览了几个小时的文档,但没有成功。
尝试在 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>