1

我有一个GtkTextView,我希望能够将光标垂直居中在中心。

如果光标移动,文本应向上(或向下)滚动,但光标仍应保持在中心位置。

我尝试了几件事:在 textview 的第一个和最后一个字符上添加边距,但是在第一个和最后一个字符后面添加文本时会出现问题。如果选择第一行也不好,选择颜色会扩展到“空”房间。

简而言之,我需要:

  1. 在第一行之前添加一个边距
  2. 在最后一行后添加边距
  3. 滚动文本以居中cursor_movetext_changed(我目前解决了这个问题
cursor_iter = self.TextBuffer.get_iter_at_mark(cursor)
fflines = round(self.window_height/(2*20))
cursor_iter.forward_visible_lines(fflines)
self.TextEditor.scroll_to_iter(cursor_iter, 0.0, True, 0, 0.5)

但是,使用这种方法,我需要在我的 textview 末尾添加几个换行符。因此,如果有人知道更好的解决方案,我会很高兴听到它)

我正在考虑进行基于像素的滚动,但我不知道该怎么做。

我很乐意听到一些建议!

4

1 回答 1

1

显然没有人想出答案。

我终于一起破解了一些有效的东西。它可能不是最干净的代码,但谁在乎呢?

实际上,由于无法向文本框添加填充,它会在文本文件的开头和结尾添加换行符以获得某种填充。

你可以在这里找到我的实现:UberWriter 的 Launchpad 项目

如果您想了解更多,请随时通过邮件询问我。

干杯,狼

于 2012-08-16T21:26:55.283 回答