[英]scroll TextView in ScrolledWindow so that cursor is visible in pyGTK2
[英]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.