簡體   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