#===============================================================================
#[窗口/對話框]
# 綁定事件處理函數
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()
pygtk技術彙總
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.