pygtk技術彙總

#===============================================================================
#[窗口/對話框]
# 綁定事件處理函數
    self.win.connect("delete-event",gtk.main_quit)
# "about"對話框
    def about(self, widget):
        about = gtk.AboutDialog() 
        about.set_name("xxx軟件")
        about.set_version("V1.0")
        about.set_authors(["xxx有限公司"])
        about.set_copyright('2009-2010')
        about.set_website('http://www.xxx.com.cn')
        icon = gtk.gdk.pixbuf_new_from_file("xxx.jpg")
        about.set_logo(icon)
        about.set_icon(icon)
        about.run()
        about.destroy()
        return
# 顯示在父窗口中央
    self.win.set_transient_for(self.parent.win)
# 彈出提示對話框
    msg_dlg = gtk.MessageDialog (self.win,/
                                 0,/
                                 gtk.MESSAGE_ERROR,/
                                 gtk.BUTTONS_CLOSE,/
                                 "請輸入有效的信息!" )
    msg_dlg.run()       # 按下任何按鈕後返回
    msg_dlg.destroy()
# 顯示或隱藏
    self.win.show()
    self.win.hide()
# 窗口通信方式
    class OtherW(gtk.Window)
       def get_data_user_entered(self):
           return 42
    class W(gtk.Window):
       def user_clicked_button(self):
           self.ow = OtherW()
           self.ow.button.connect("clicked", self._get_data)
       def _get_data(self, *args):
           data = self.ow.get_data_user_entered()
    w = W()
    w.show_all()
    gtk.main()
#===============================================================================
#[TextView]
# 設置文本
    buf = gtk.TextBuffer()
    buf.set_text("string")
    self.tv.set_buffer(buf)
# 獲取文本
#===============================================================================
#[TreeView]
# 獲取/修改當前選中行的數據
    (treestore, iter) = self.treeview.get_selection().get_selected()
    item = treestore.get_value(iter, 0)     # 獲取第0列數據
    treestore.set_value(iter, n, item)      # 修改第n列數據
# 移除所有已經存在的列頭
    for col in self.treeview.get_columns():
        self.treeview.remove_column(col)
# 插入數據
    n=0
    for head in ['col_1','col_2','col_3']:
        column = gtk.TreeViewColumn(head, gtk.CellRendererText(), text=n)
        column.set_resizable(True)
        column.set_sort_column_id(n)    # 使列頭可點擊排序
        self.treeview.append_column(column)
        n=n+1
    self.list_store = gtk.ListStore(str,str,str)
    self.treeview.set_model(self.list_store)
    self.list_store.append(['text_1','text_2','text_3'])
    self.treeview.show()
# 雙擊行事件處理
    # 綁定信號"row_activated"與該函數
    def double_click_row(self, treeview, path, view_column):
        self.tv_model = treeview.get_model()
        self.tv_iter  = self.tv_model.get_iter(path)
        # 獲取該行每一列的值
        for n in range(0, self.tv_model.get_n_columns()):
            item = self.tv_model.get_value(self.tv_iter, n)
#===============================================================================
#[進度條(progressbar)]
# 顯示進度條
    n = 1
    while n < 100:
        self.progressbar.set_fraction(float(n)/100)
        n += 1
        # 立即刷新進度條
        while gtk.events_pending():
             gtk.main_iteration_do(False)
        time.sleep(0.05)
    self.progressbar.set_fraction(0.0)
# 設置背景文本
    self.progressbar.set_text("text")
#===============================================================================
#[菜單]
# disable菜單
    self.menu.set_sensitive(False)
# 觸發菜單事件
    self.menu.activate()
#===============================================================================
#[其他]
# 設置字體大小
    context = self.progressbar.get_pango_context()
    font = context.get_font_description()
    font.set_size(int(font.get_size() * 1.3))   # 設置爲原來的1.3倍大小
    font.set_weight(700)                        # 設置爲Bold(對應700)
    font.set_family("Monospace")                # 設置字體
    self.progressbar.modify_font(font) 
# 檢測按鍵
        # 綁定按鍵處理函數
        self.win.connect("key-press-event",self.on_key_press)
        # 按鍵處理
        def on_key_press(self, window, event):
            keyname = gtk.gdk.keyval_name(event.keyval)
            if keyname == "space":
                print keyname
            return
# 設置標籤(label)文本
    self.label.set_text("string")
#===============================================================================
#[輸入框(entry)]
# 獲取/設置輸入框的文本
    text = self.entry.get_text()
    self.entry.set_text("string")
# 設置爲不可見輸入模式
    self.passwd.set_visibility(False)
# 設置背景色
    self.entry.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#DCDCDC"))
# 設置輸入焦點
    self.entry.grab_focus()

發佈了30 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章