我正在尝试制作一个自定义小部件,类似于Gtk在所有类似TreeView的小部件上使用的“快速搜索”条目。在
以下是我最初想法的一个简化示例:
from gi.repository import Gtk
class QuickSearch(Gtk.Bin):
def __init__(self, *args, **kwargs):
super(QuickSearch, self).__init__(*args, **kwargs)
self.add(Gtk.Entry())
win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
search = QuickSearch()
win.add(search)
win.show_all()
Gtk.main()
问题如下:
GtkEntry
不会显示在屏幕上。我尝试了GtkEntry
和自定义小部件(hexpand、vexpand、margins、aligns等)的各种属性组合,但都没有效果。在那么,在对象初始化或如何使用这个自定义小部件时,我遗漏了一些东西?这是GtkBin
特有的问题吗?我试着用一个GtkBox
做同样的事情,但我认为GtkBin
更适合这个特定的小部件。在
由于某些原因,
Gtk.Bin
没有为其子级分配空间。如果实现do_size_allocate
虚拟方法,那么它就可以工作了。为什么没有调用默认实现,我不知道。在但是,我认为从
Gtk.Frame
继承更适合您的目的;它是一个子容器,其周围有可样式化的边框,这正是您想要的。其大小分配方法有效。在相关问题 更多 >
编程相关推荐