button = gtk.Button(label=None, stock=None)
stock项主要有以下:
STOCK_DIALOG_INFO
STOCK_DIALOG_WARNING
STOCK_DIALOG_ERROR
STOCK_DIALOG_QUESTION
STOCK_DND
STOCK_DND_MULTIPLE
STOCK_ADD
STOCK_APPLY
STOCK_BOLD
STOCK_CANCEL
STOCK_CDROM
STOCK_CLEAR
STOCK_CLOSE
STOCK_CONVERT
STOCK_COPY
STOCK_CUT
STOCK_DELETE
STOCK_EXECUTE
STOCK_FIND
STOCK_FIND_AND_REPLACE
STOCK_FLOPPY
STOCK_GOTO_BOTTOM
STOCK_GOTO_FIRST
STOCK_GOTO_LAST
STOCK_GOTO_TOP
STOCK_GO_BACK
STOCK_GO_DOWN
STOCK_GO_FORWARD
STOCK_GO_UP
STOCK_HELP
STOCK_HOME
STOCK_INDEX
STOCK_ITALIC
STOCK_JUMP_TO
STOCK_JUSTIFY_CENTER
STOCK_JUSTIFY_FILL
STOCK_JUSTIFY_LEFT
STOCK_JUSTIFY_RIGHT
STOCK_MISSING_IMAGE
STOCK_NEW
STOCK_NO
STOCK_OK
STOCK_OPEN
STOCK_PASTE
STOCK_PREFERENCES
STOCK_PRINT
STOCK_PRINT_PREVIEW
STOCK_PROPERTIES
STOCK_QUIT
STOCK_REDO
STOCK_REFRESH
STOCK_REMOVE
STOCK_REVERT_TO_SAVED
STOCK_SAVE
STOCK_SAVE_AS
STOCK_SELECT_COLOR
STOCK_SELECT_FONT
STOCK_SORT_ASCENDING
STOCK_SORT_DESCENDING
STOCK_SPELL_CHECK
STOCK_STOP
STOCK_STRIKETHROUGH
STOCK_UNDELETE
STOCK_UNDERLINE
STOCK_UNDO
STOCK_YES
STOCK_ZOOM_100
STOCK_ZOOM_FIT
STOCK_ZOOM_IN
STOCK_ZOOM_OUT
如:
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk
pygtk.require('2.0')
import gtk
class DeepFuture:
def blogurlshow(self,widget,data=None):
print("我的博客:deepfuture.javaeye.com")
def delwin_event(self,widget,event,data=None):
#如果你在"delete_event"事件处理中,返回FALSE,GTK会继续发射这个信号,以供destroy,否则返回TRUE,表示这个信号已经被处理,不需要再处理了,也不需要再发射这个信号了,这意味着你不能destroy窗口。
print("delete event!")
return False
def destroy_win(self,widget,data=None):
#处理窗口销毁信号
print("destroy event!")
gtk.main_quit()
def __init__(self):
#创建一个新窗口
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
#指定信号与相关处理事件
self.window.connect("delete_event", self.delwin_event)
self.window.connect("destroy", self.destroy_win)
self.window.set_border_width(15)
self.button = gtk.Button("显示我的博客",gtk.STOCK_SAVE_AS)
self.button.connect("clicked", self.blogurlshow, None)
self.button.connect_object("clicked", gtk.Widget.destroy,self.window)
self.window.add(self.button)
#显示按钮和相关窗口
self.button.show()
self.window.show()
def main(self):
gtk.main()
if __name__ == "__main__":
deep=DeepFuture()
deep.main()
带图片的按钮,采用在button内加上box的方式
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
# Create a new hbox with an image and a label packed into it
# and return the box.
def xpm_label_box(parent, xpm_filename, label_text):
# Create box for xpm and label
box1 = gtk.HBox(False, 0)
box1.set_border_width(2)
# Now on to the image stuff
image = gtk.Image()
image.set_from_file(xpm_filename)
# Create a label for the button
label = gtk.Label(label_text)
# Pack the pixmap and label into the box
box1.pack_start(image, False, False, 3)
box1.pack_start(label, False, False, 3)
image.show()
label.show()
return box1
class Buttons:
# Our usual callback method
def callback(self, widget, data=None):
print "Hello again - %s was pressed" % data
def __init__(self):
# Create a new window
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Image’d Buttons!")
# It’s a good idea to do this for all windows.
self.window.connect("destroy", lambda wid: gtk.main_quit())
self.window.connect("delete_event", lambda a1,a2:gtk.main_quit())
# Sets the border width of the window.
self.window.set_border_width(10)
# Create a new button
button = gtk.Button()
# Connect the "clicked" signal of the button to our callback
button.connect("clicked", self.callback, "cool button")
# This calls our box creating function
box1 = xpm_label_box(self.window, "./logo.xpm", "logo button")
# Pack and show all our widgets
button.add(box1)
box1.show()
button.show()
self.window.add(button)
self.window.show()
def main():
gtk.main()
return 0
if __name__ == "__main__":
Buttons()
main()
事件:
enter -进入button产生
leave - 离开button产生
pressed - 按下产生
released - 释放产生
clicked - 单击产生