b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pango markup_markup公式_markup用法(3)

电脑杂谈  发布时间:2017-06-08 15:06:17  来源:网络整理

from TextWidget import TextWidget
from sugar.graphics.notebook import Notebook
...
        top_container = Notebook()
        
        #Create pages for the notebook
        first_page = gtk.VBox()
        #Create a TextWidget object that can display pango markup text and add it to the first page
        tw = TextWidget()
        first_page.pack_start(tw)

        second_page = gtk.VBox()
        third_page = gtk.Frame()

        #Add the pages to the notebook. 
        top_container.add_page('First Page', first_page)
        top_container.add_page('Second Page', second_page)
        top_container.add_page('Third Page', third_page)
        return top_container

You will often want to change or reset the text in a pango layout during the life of your activity. To create such dynamic layouts, the main thing you need to do is reset the text or markup for your pango layout (usually using set_markup()) and to then call the queue_draw() method which schedules a redraw (effectively forcing an expose_event signal to be thrown).

The code below uses a standard timeout code pattern to call a method every 1 second. So the text in the Pango is updated to give the current time roughly every 1 second.

import gtk

from gtk import gdk
import cairo
import pango
import gobject
import datetime

class TextWidget(gtk.DrawingArea):

	def __init__(self):

		self.repeat_period_msec = 1000 
		
		gtk.DrawingArea.__init__(self)
		self.context = None

		#create a pango layout. Leave text argument to be empty string since we want to use markup
		self.pango_context = self.create_pango_context()
		self.pango_layout = self.create_pango_layout('')
		
		#Use pango markup to set the text within the pango layout
		self.pango_layout.set_markup('<span foreground=\"blue\">This is some sample markup</span> <sup>text</sup> that <u>is displayed with pango</u>')

		#Make sure to detect and handle the expose_event signal so you can always
		#redraw the pango layout as appropriate. 
		self.connect("expose_event", self.expose_cb)
		self.set_size_request(450, -1)
		self.repeatedly_update_time()


	#The expose method is automatically called when the widget
	#needs to be redrawn
	def expose_cb(self, widget, event):
		
		#create a CAIRO context (to use with pango)
		self.context = widget.window.cairo_create()
		
		#Show the pango_layout in the Cairo context just created. 
		self.context.show_layout(self.pango_layout)

	#This method calls itself every 1 second and updates the time displayed. 
	def repeatedly_update_time(self):
		now = datetime.datetime.now()
		self.pango_layout.set_markup("<u>Current time:</u> " + str(now))
		self.queue_draw()
		gobject.timeout_add(self.repeat_period_msec, self.repeatedly_update_time)


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-51835-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 姬小子
      姬小子

      看来台湾还是有清醒脑筋的聪明人

    • 皇甫冉
      皇甫冉

      也许是随意惯了

    热点图片
    拼命载入中...