或者"如何向GtkTextView添加可见(薄)边框"?它有可能吗?
先感谢您.
我想知道正确且普遍接受的方法是将一个顶部和底部边距添加到一个GtkTextView内部GtkScrolledWindow.有一些设置左边距和右边距的功能,我正在使用:
gtk_text_view_set_left_margin(GTK_TEXT_VIEW(editor_text_view), 2);
gtk_text_view_set_right_margin(GTK_TEXT_VIEW(editor_text_view), 2);
Run Code Online (Sandbox Code Playgroud)
但我似乎无法在顶部和底部找到任何文档.我试着改变的边框宽度GtkTextView与gtk_container_set_border_width但边界不与的背景色画GtkTextView.
基本上 - 我所拥有的是左边,我想要的是右边.

如何将文本打印(例如在标签中)到 GtkTextView 中?对于 GtkLabel 和 GtkEntry 有 gtk_label_get_text() 和 gtk_entry_get_text(),但是对于 GtkTextView 呢?
我第一次在 GTK 和 Glade 上乱搞,我遇到了一个非常烦人的问题。当我在 TextView 中输入文本时,TextView 会自动调整大小,将其他小部件推开。
这是一个非常烦人的行为。我不希望我的 TextView 根据其中的文本量改变大小。
有谁知道我可以做些什么来防止 TextView 根据其内容调整大小?
我有以下代码可以很好地设置 GtkTextview 的背景和前景色:
static void
setColor(GtkWidget * widget) {
auto style_context = gtk_widget_get_style_context (widget);
gtk_style_context_add_class(style_context, GTK_STYLE_CLASS_VIEW );
auto css_provider = gtk_css_provider_new();
GError *error=NULL;
auto data = g_strdup_printf("\
* {\
background-color: black;\
color: white;\
}\
*:selected {\
background-color: blue;\
color: yellow;\
}\
");
gtk_css_provider_load_from_data (css_provider, data, -1, &error);
g_free(data);
if (error){
ERROR("gtk_css_provider_load_from_data: %s\n", error->message);
g_error_free(error);
return;
}
gtk_style_context_add_provider (style_context,
GTK_STYLE_PROVIDER(css_provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
Run Code Online (Sandbox Code Playgroud)
结果是正常文本颜色和选定文本颜色都具有黑色背景和白色前景。
为什么所选文本不显示为黄色/蓝色?
任何指向示例文件的指针将不胜感激。
我有一个使用GtkTextView和GtkTextBuffer的应用程序。使用以下python代码将行添加到缓冲区,这些python代码在与主进程不同的线程中运行:
while True:
if aLogQueue.qsize() > 0:
aBuffer = aLogTextView.get_buffer()
try:
newLogMessage = aLogQueue.get_nowait()
ipri = int(newLogMessage[0])
if(ipri>=self.ListenLogMinPr):
aniter = aBuffer.get_iter_at_line(0)
aBuffer.insert(aniter, newLogMessage)
#mark = aBuffer.get_mark('insert')
#aniter = aBuffer.get_iter_at_mark(mark)
#aBuffer.place_cursor(aniter)
pass
except:
print('threw exception in message loop')
self.gui_shutdown()
Run Code Online (Sandbox Code Playgroud)
aLogQueue是一行ASCII文本消息的队列。
该应用程序运行了一段时间,但随后始终由于以下错误而崩溃
Gtk:ERROR:gtktextview.c:4328:gtk_text_view_validate_onscreen:断言失败:(priv-> onscreen_validated)
请注意,我在第0行进行插入,因此迭代器被insert调用破坏的事实不起作用。
它在失败前写入20至200行。它似乎与注销文本缓冲区的边缘无关,并且在期望时会出现滚动条。
有什么建议么?