- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个小应用程序测试应用程序(请在终端中运行它):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import time
import gtk
text = '''Python – język programowania wysokiego poziomu ogólnego przeznaczenia[2] i rozbudowanym pakiecie bibliotek standardowych[3], którego ideą przewodnią jest czytelność i klarowność kodu źródłowego. Jego składnia cechuje się przejrzystością i zwięzłością[4][5].
Python wspiera różne paradygmaty programowania: obiektowy, imperatywny oraz w mniejszym stopniu funkcyjny. Posiada w pełni dynamiczny system typów i automatyczne zarządzanie pamięcią, będąc w tym podobnym do języków Perl, Ruby, Scheme czy Tcl. Podobnie jak inne języki dynamiczne jest często używany jako język skryptowy. Interpretery Pythona są dostępne na wiele systemów operacyjnych.'''
main_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
main_window.set_default_size(640, 480)
main_window.connect('destroy', lambda a: gtk.main_quit())
text_buffer = gtk.TextBuffer()
text_buffer.set_text(text)
text_view = gtk.TextView(text_buffer)
text_view.set_wrap_mode(gtk.WRAP_WORD)
main_window.add(text_view)
main_window.show_all()
for m in re.finditer('Python', text):
start_iter = text_buffer.get_iter_at_offset(m.start())
end_iter = text_buffer.get_iter_at_offset(m.end())
t = text_buffer.get_text(start_iter, end_iter)
print('This string should == Python', t)
gtk.main()
这证明了我的问题。在此应用程序中,我使用正则表达式搜索字符串,接下来我想在 GtkTextView 中选择该字符串,但不幸的是,来自 MatchObject 的匹配字符偏移量与 GtkTextBuffer 中的字符偏移量不匹配,这是为什么以及如何解决?
最佳答案
问题是 text
中的字符串是 Python 2 字节字符串,恰好包含 UTF-8 编码的数据。此类字符串中的偏移量是字节偏移量,仅对应于数据为全 ASCII 时的字符偏移量。另一方面,get_iter_at_offset
使用的偏移量始终是字符偏移量。
此问题的快速解决方法是将文本转换为 Unicode,例如与:
text = text.decode('utf-8')
然后 re.finditer
也会报告字符偏移量,程序会显示预期的输出。
关于python - 为什么字符偏移量在 gtk.TextBuffer 中移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22327139/
我正在使用这个例子 http://www.pygtk.org/pygtk2tutorial/examples/testtext.py 但是没用 我只看到白色文本区域,终端没有显示任何通知 Ubuntu
我有一个 TextView,我想自动将所有键入、粘贴等文本转换为大写,这可能吗?我尝试添加一个 bufferInsertText 处理程序并自己从那里插入文本,但此错误消息不断弹出: Gtk-WARN
我想知道是否有一种方法可以在用户键入时从 TextBuffer 打印输入。我尝试过使用 insert_text 信号,但它似乎打印出了后面一个字符的输入。 到目前为止我已经 self.__buffer
我有一个小应用程序测试应用程序(请在终端中运行它): #!/usr/bin/env python # -*- coding: utf-8 -*- import re import time impor
我正在尝试在 pygtk 中编写一个简单的基于 gui 的应用程序,它提供基于文本的标记的“实时”预览。然而,标记处理的计算成本可能相当高,而且运行速度很慢,因此在每次击键时更新预览实际上并不可行。相
我有一个包含 TextView 的进程窗口。 Textview 有一个文本缓冲区。使用以下代码,我可以在此文本缓冲区-->textview--processwindow中打印一些文本。 我想更改 Te
Gtk# 是否提供将格式化文本从 TextView/Textbuffer 写入文件的可能性? 使用哪种文件格式最合理:XML、RTF、HTML? 如果没有可用的: 是否有一种简单的方法来遍历 Text
我只是在学习 c++ 的 gtkmm。我无法获取简单的 TextBuffer 来添加新的文本行。我有一个名为 OutputBox 的类,它是一个带有 TextViewer(称为消息)和 TextBuf
我正在 Linux 上学习 GTKmm (C++)。 我想通过按下按钮获取 TextView 的内容。 代码std::cout get_text();不向控制台输出任何内容,我在官方网站上找不到足够的
我正在学习 C++ 和 Gtk+ GUI 我是新手,我找不到好的教程,我遇到过这个问题所以我会在这里写一个问题。 当我点击更新按钮时出现这个错误: 段错误 下面有一张图片解释了我的问题。 我做错了什么
我在我的项目中使用 Gtk TextView/TextBuffer,用户可以通过选择正确的切换按钮来输入富文本(粗体/斜体/下划线)。 问题是,如果我将下划线或斜体 Pango 标志应用于 TextV
我想选择并替换三个字符,比如“STR”,除非它们在 @ 符号之后。 我使用 text buffer class用替换方法。我可以替换这三个字符,但它也替换了三个字符之前的字符。 这是我的代码: sta
我有一个 TextView 和一个与其关联的 TextBuffer。 当用户按下 Ctrl+b 时,我希望文本开始以粗体输入,直到用户再次按下 Ctrl+b。 我尝试了自己的方法,但没有用,然后我在邮
我正在开发一个 Python 3 项目,该项目使用 Gtk3 TextView/TextBuffer 来获取用户的输入,并且我已经让它可以让用户输入富文本并将其格式设置为粗体/斜体/下划线/这些的组合
我正在尝试在 python 中创建一个日历应用程序。至于现在我已经设法创建了 Gtk.window,一个有两页的 Gtk.Notebook(page1月历,第 2 页周历)添加到 Gtk.window
我是一名优秀的程序员,十分优秀!