<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Pango II > 原文: [http://zetcode.com/gui/pygtk/pangoII/](http://zetcode.com/gui/pygtk/pangoII/) 在 PyGTK 編程教程的這一部分中,我們將繼續探索 Pango 庫。 ## 動畫文字 下面的示例在窗口上顯示動畫文本。 `animation.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example shows animated text # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk import glib import pango import math class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.connect("destroy", gtk.main_quit) glib.timeout_add(160, self.on_timer) self.count = 1 self.set_border_width(10) self.set_title("ZetCode") self.label = gtk.Label("ZetCode") fontdesc = pango.FontDescription("Serif Bold 30") self.label.modify_font(fontdesc) vbox = gtk.VBox(False, 0) vbox.add(self.label) self.add(vbox) self.set_size_request(300, 250) self.set_position(gtk.WIN_POS_CENTER) self.show_all() def on_timer(self): attr = pango.AttrList() self.count = self.count + 1 for i in range(7): r = pango.AttrRise(int(math.sin(self.count+i)*20)*pango.SCALE, i, i+1) attr.insert(r) self.label.set_attributes(attr) return True PyApp() gtk.main() ``` 在上面的代碼示例中,標簽小部件中有一個文本。 通過不斷更改其 pango 屬性,可以對文本進行動畫處理。 ```py self.label = gtk.Label("ZetCode") fontdesc = pango.FontDescription("Serif Bold 30") self.label.modify_font(fontdesc) ``` 我們創建標簽小部件并修改其字體。 我們選擇較大的文本以提高可見性。 ```py vbox = gtk.VBox(False, 0) vbox.add(self.label) ``` 我們將標簽放入垂直框中。 這將標簽居中在窗口上。 動畫在`on_timer()`方法內部執行。 ```py for i in range(7): r = pango.AttrRise(int(math.sin(self.count+i)*20)*pango.SCALE, i, i+1) attr.insert(r) ``` 我們的文字中有七個字符。 我們會定期更改每個角色的 pango `AttrRise`屬性。 上升基于三角正弦函數。 文本移動遵循在笛卡爾圖上繪制的正弦函數。 另請注意`pango.SCALE`常數。 Pango 庫有自己的單元。 它們與小部件用來繪制圖形或文本的方式不同。 我們必須用這個常數乘數字。 ![Animated text](https://img.kancloud.cn/1f/b8/1fb8897c8e4995954c5993e62fadfb43_308x278.jpg) 圖:動畫文本 ## 使用標記語言 我們可以使用內置的標記語言來更改文本的屬性。 `markup.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example uses markup language # to change attributes of the text # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk import pango quote = "<span foreground='blue' size='19000'>The only victory over love is flight</span>" class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Markup") self.set_border_width(5) self.connect("destroy", gtk.main_quit) label = gtk.Label() label.set_markup(quote) vbox = gtk.VBox(False, 0) vbox.add(label) self.add(vbox) self.set_position(gtk.WIN_POS_CENTER) self.show_all() PyApp() gtk.main() ``` 在代碼示例中,我們有一個標簽。 我們使用標記語言更改其文本屬性。 ```py quote = "<span foreground='blue' size='19000'>The only victory over love is flight</span>" ``` 這是帶有標記語言的文本。 ```py label = gtk.Label() label.set_markup(quote) ``` 我們創建標簽小部件并為其設置標記文本。 ![Using markup](https://img.kancloud.cn/6c/5b/6c5b67d6ed42e64163b7e967670b24ba_442x67.jpg) 圖:使用標記 ## Pango 布局 Pango 布局是一個對象,代表帶有屬性的文本段落。 `layout.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example shows pango Layout # in action # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk import pango lyrics = """Meet you downstairs in the bar and heard your rolled up sleeves and your skull t-shirt You say why did you do it with him today? and sniff me out like I was Tanqueray cause you're my fella, my guy hand me your stella and fly by the time I'm out the door you tear men down like Roger Moore I cheated myself like I knew I would I told ya, I was trouble you know that I'm no good""" class Area(gtk.DrawingArea): def __init__(self): super(Area, self).__init__() self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(16400, 16400, 16440)) self.connect("expose_event", self.expose) def expose(self, widget, event): gc = self.get_style().fg_gc[gtk.STATE_NORMAL] font_desc = pango.FontDescription('Sans 10') layout = self.create_pango_layout(lyrics) width, height = self.get_size_request() attr = pango.AttrList() fg_color = pango.AttrForeground(60535, 60535, 60535, 0, -1) attr.insert(fg_color) layout.set_width(pango.SCALE * self.allocation.width) layout.set_spacing(pango.SCALE * 3) layout.set_alignment(pango.ALIGN_CENTER) layout.set_font_description(font_desc) layout.set_attributes(attr) self.window.draw_layout(gc, 0, 5, layout) class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.connect("destroy", gtk.main_quit) self.set_title("You know I'm no Good") self.add(Area()) self.set_size_request(300, 300) self.set_position(gtk.WIN_POS_CENTER) self.show_all() PyApp() gtk.main() ``` 在前面的示例中,我們正在修改現有小部件中的文本。 現在,我們將使用`DrawingArea`小部件上的 pango 布局繪制文本。 我們將使用`Gdk`繪圖工具進行繪圖。 ```py gc = self.get_style().fg_gc[gtk.STATE_NORMAL] ``` 我們得到了繪圖區域小部件的圖形頂點。 ```py layout = self.create_pango_layout(lyrics) ``` 在這里創建 pango 布局對象。 ```py layout.set_width(pango.SCALE * self.allocation.width) layout.set_spacing(pango.SCALE * 3) layout.set_alignment(pango.ALIGN_CENTER) layout.set_font_description(font_desc) layout.set_attributes(attr) ``` 我們修改布局的寬度,間距,對齊方式,字體并設置文本屬性。 ```py self.window.draw_layout(gc, 0, 5, layout) ``` 布局正在窗口上繪制。 ![Layout](https://img.kancloud.cn/2c/fb/2cfbb42fe5cdf5608a58072b47ecb978_308x328.jpg) 圖:布局 在 PyGTK 編程庫的這一章中,我們進一步使用了 pango 庫。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看