繁体   English   中英

将文本视图添加到pygtk中的scrolledwindow中

[英]adding a textview to scrolledwindow in pygtk

我试图在pygtk中的滚动窗口中添加一些文本。 textview包装在一个简单的盒子容器中。 我在网上搜索,发现我需要先添加一个视口才能使其正常工作,但我不断收到以下错误消息:

Gtk-CRITICAL **: gtk_viewport_add: assertion 'gtk_bin_get_child (bin) == NULL' failed

这是我的代码:

container = Gtk.Box()
container.set_name('text_container')

tv = Gtk.TextView()
text_input = self.builder.get_object('entry1')
text = text_input.get_text()
text_input.set_text('')
tv.get_buffer().set_text(text)

container.pack_start(tv,True,True,0)
self.viewport.add(container)

我已遵循此方法,因为我已经在“ glade”文件的滚动窗口中添加了视口。 欢迎任何帮助或在线资源。

错过了第一轮的真正原因。

问题是您要向视口中添加多个控件(只能有一个控件)。

gtk_viewport_add: assertion 'gtk_bin_get_child (bin) == NULL' failed

转换为:“该视口没有子代的断言是错误的”,因为您已经添加了一些东西。

您需要将所有容器打包到另一个容器中, 然后将其添加到视口中。

它与HBox / VBox一起使用,这是唯一的问题。 但是,既然我已经使用了add_with_viewport()方法,那么我应该在哪个对象上调用show()方法,以便显示我添加的小部件? 这是最终的代码:-

container = Gtk.VBox()
container.set_name('text_container')
tv = Gtk.TextView()
text_input = self.builder.get_object('entry1')
text = text_input.get_text()
if text:
        text_input.set_text('')
        tv.get_buffer().set_text(text)

        container.pack_start(tv,True,True,0)
        self.sw.add_with_viewport(container)

因为没有没有变量引用刚添加的视口,所以我应该在哪个对象上调用show()方法以使小部件显示在滚动窗口中。 我尝试将show添加到类似container.show()的容器中,但是没有显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM