我在GTK 3应用程序中收到以下警告:
Gtk-WARNING**:在
__main__+MCVEWindow 0000000004e93b30
不调用gtk_widget_get_preferred_width/height()的情况下分配大小.代码如何知道要分配的大小?
当Gtk.ScrolledWindow
包含Gtk.TreeView
附加到网格时,会发生警告,网格本身附加到网格上,gtk.ApplicationWindow
并且有足够的元素供滚动条实际显示.如果没有足够的元素使其可滚动,则不会出现警告.
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk as gtk
class MCVEWindow(gtk.ApplicationWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._tree_view = gtk.TreeView()
self._tree_view.set_hexpand(True)
self._tree_view.set_vexpand(True)
self.populate_tree_view() # populate tree view with fake items
window_column = gtk.TreeViewColumn(
"Window", gtk.CellRendererText(),
text=0
)
window_column.set_resizable(True)
handle_column = gtk.TreeViewColumn(
"Handle", gtk.CellRendererText(),
text=1
)
class_column = gtk.TreeViewColumn(
"Class name", gtk.CellRendererText(),
text=2
)
self._tree_view.append_column(window_column)
self._tree_view.append_column(handle_column)
self._tree_view.append_column(class_column)
scrolled_tree_view = gtk.ScrolledWindow()
scrolled_tree_view.add(self._tree_view)
toolbar = gtk.Toolbar()
expand_tree_view_button = gtk.ToolButton(icon_name="list-add") …
Run Code Online (Sandbox Code Playgroud) 我有一个带有 Treeview 小部件和一列的窗口。如果我添加足够的节点以使节点的文本超出窗口宽度,则无法水平滚动,除非我更改列宽以使其比窗口宽度更宽。
这就是我的意思:
我应该能够水平滚动,这样我就可以适应节点的文本,但水平滚动条被禁用。
但是,如果我手动调整列本身的大小,我将能够滚动直到到达列的右边框。
请注意,滚动条适应列宽,而不是文本,文本被留在后面。
self._tree_scrollbar_x = ttk.Scrollbar(self._tree_frame, orient='horizontal', command=self._tree.xview)
self._tree.configure(xscrollcommand=self._tree_scrollbar_x.set)
self._tree_scrollbar_x.grid(row=1, column=0, sticky=(tk.E, tk.W))
Run Code Online (Sandbox Code Playgroud)
有一个resize
属性,但仅更改列是否随窗口框架/边框自动调整大小。
我知道这个问题以前曾被问过,但没有可靠的答案,所以这可能是 Tkinter/Ttk 的限制。
非常感谢任何帮助,谢谢。
由于看起来像Tk/Tkinter限制,我不能水平滚动Treeview列,我想让它粘,所以它附加到帧.
问题是用户可以手动调整Treeview列的大小,这可能会以某种方式搞乱我的界面.是否可以禁用此类功能?
请注意列标题的大小.
用户可以拖动鼠标来调整列大小.我想禁用它.
设置minwidth
为某个值可防止列收缩,但仍可以将其调整为更大的宽度.我想我可以对改变宽度做出反应并将其恢复原状,但必须有更好的方法来做到这一点.
python ×3
python-3.x ×2
tkinter ×2
treeview ×2
ttk ×2
gtk ×1
gtk3 ×1
pygobject ×1
tk-toolkit ×1