小编Doo*_*890的帖子

"将大小分配给..."在Gtk.ScrolledWindow中使用Gtk.TreeView时出现GTK警告

我在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)

python gtk pygobject python-3.x gtk3

8
推荐指数
1
解决办法
990
查看次数

是否可以滚动 Treeview 的列内容,而不是 Tkinter 中的列窗口?

我有一个带有 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 的限制。

非常感谢任何帮助,谢谢。

python treeview tkinter ttk python-3.x

6
推荐指数
0
解决办法
1154
查看次数

如何禁用手动调整Tkinter的Treeview列的大小?

由于看起来像Tk/Tkinter限制,我不能水平滚动Treeview列,我想让它粘,所以它附加到帧.

问题是用户可以手动调整Treeview列的大小,这可能会以某种方式搞乱我的界面.是否可以禁用此类功能?

请注意列标题​​的大小.

请注意列标题​​的大小.

用户可以拖动鼠标来调整列大小. 我想禁用它.

用户可以拖动鼠标来调整列大小.我想禁用它.

设置minwidth为某个值可防止列收缩,但仍可以将其调整为更大的宽度.我想我可以对改变宽度做出反应并将其恢复原状,但必须有更好的方法来做到这一点.

python treeview tk-toolkit tkinter ttk

4
推荐指数
1
解决办法
1318
查看次数

标签 统计

python ×3

python-3.x ×2

tkinter ×2

treeview ×2

ttk ×2

gtk ×1

gtk3 ×1

pygobject ×1

tk-toolkit ×1