首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式更改GTK3 TextView的字体(快速-小部件TextEditor)

以编程方式更改GTK3 TextView的字体(快速-小部件TextEditor)
EN

Ask Ubuntu用户
提问于 2012-08-29 15:32:23
回答 2查看 5K关注 0票数 3

在使用PyGI和GTK3的应用程序中,我试图让用户通过应用程序的设置对话框在TextView中设置字体系列和字体大小。在PyGI中,TextView对象有几个属性的"set“方法,但对于字体属性没有。我可以通过CSS设置字体系列,使用CSS样式提供程序。但我不能动态地更改CSS以尊重用户选择的字体。那我该怎么做呢?(请注意,所讨论的小部件实际上是来自快速小部件包的TextEditor,我正在使用它快速构建应用程序。)

编辑以澄清:我不喜欢使用CSS,这似乎只是GTK的首选方法。我希望的是一种类似于GtkTextView.setFontProperties()之类的方法。我找不到这样的字体属性。

谢谢,

伊恩

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2012-08-31 21:45:40

您可以使用GTK+'s内置按钮和对话框在文本视图中设置字体,Gtk.FontButton()

代码语言:javascript
复制
#!/usr/bin/python

from gi.repository import Gtk

class TextViewWindow:
    def __init__(self):
        self.window = Gtk.Window()
        self.window.set_default_size(400, 400)

        main_vbox = Gtk.VBox(homogeneous=False, spacing=0)
        self.window.add(main_vbox)

        self.tview = Gtk.ScrolledWindow()
        main_vbox.add(self.tview)

        self.textview = Gtk.TextView()
        self.textbuffer = self.textview.get_buffer()
        self.textbuffer.set_text("Here is a text view.")
        self.textview.set_wrap_mode(Gtk.WrapMode.WORD)

        self.tview.add(self.textview)

        self.font_button = Gtk.FontButton()
        self.font_button.connect('font-set', self.on_font_set)
        main_vbox.pack_start(self.font_button, False, False, 0)

        self.window.show_all()
        self.window.connect('destroy', lambda w: Gtk.main_quit())

    def on_font_set(self, widget):
        font_description = widget.get_font_desc()
        print "You chose: " + widget.get_font()
        self.textview.modify_font(font_description)

def main():
    app = TextViewWindow()
    Gtk.main()

if __name__ == "__main__":
    main()

我的演示:

内置对话框:

票数 3
EN

Ask Ubuntu用户

发布于 2012-08-29 15:39:29

您应该能够使用文本标记来实现这一点,但我不确定这是“最佳”方式。

首先,选择所有文本,在应用标记时从readthedocs站点下面是页面。

下面是来自C/C++引用的属性列表。

把这个加上去..。我最近需要做一些类似的事情,我不得不做一些事情来想出这个片段:

代码语言:javascript
复制
self.textview = Gtk.TextView()
self.textview.override_font(
    Pango.font_description_from_string('DejaVu Sans Mono 12')
    )
票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/181850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档