::-- ehu4ever [DateTime(2005-08-09T13:55:24Z)] TableOfContents
1. 普通货色
按钮到处都是,真是太太普通了。用gtk.Button()就可以建立一个按钮了,还可以顺便加一个文本标签,想造一个空白的按钮也随你便。你也可在你的按钮上铺上图片。
建立一个按钮就是这么简单:
button = gtk.Button(label=None, stock=None)
在很多时候,按钮上还会有一个指示图标。就是以下的其中一个:
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
button.py是一个使用gtk.Button()建立按钮的例子,有的按钮上的文本,有的按钮上有图片,也可以两样都有:
Figure 6.1. Button with Pixmap and Label |
attachment:button.png |
以下是源代码:
1 #!/usr/bin/env python
2
3 # example-start buttons buttons.py
4
5 import pygtk
6 pygtk.require('2.0')
7 import gtk
8
9 # Create a new hbox with an image and a label packed into it
10 # and return the box.
11
12 def xpm_label_box(parent, xpm_filename, label_text):
13 # Create box for xpm and label
14 box1 = gtk.HBox(False, 0)
15 box1.set_border_width(2)
16
17 # Now on to the image stuff
18 image = gtk.Image()
19 image.set_from_file(xpm_filename)
20
21 # Create a label for the button
22 label = gtk.Label(label_text)
23
24 # Pack the pixmap and label into the box
25 box1.pack_start(image, False, False, 3)
26 box1.pack_start(label, False, False, 3)
27
28 image.show()
29 label.show()
30 return box1
31
32 class Buttons:
33 # Our usual callback method
34 def callback(self, widget, data=None):
35 print "Hello again - %s was pressed" % data
36
37 def __init__(self):
38 # Create a new window
39 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
40
41 self.window.set_title("Image'd Buttons!")
42
43 # It's a good idea to do this for all windows.
44 self.window.connect("destroy", lambda wid: gtk.main_quit())
45 self.window.connect("delete_event", lambda a1,a2:gtk.main_quit())
46
47 # Sets the border width of the window.
48 self.window.set_border_width(10)
49
50 # Create a new button
51 button = gtk.Button()
52
53 # Connect the "clicked" signal of the button to our callback
54 button.connect("clicked", self.callback, "cool button")
55
56 # This calls our box creating function
57 box1 = xpm_label_box(self.window, "info.xpm", "cool button")
58
59 # Pack and show all our widgets
60 button.add(box1)
61
62 box1.show()
63 button.show()
64
65 self.window.add(button)
66 self.window.show()
67
68 def main():
69 gtk.main()
70 return 0
71
72 if __name__ == "__main__":
73 Buttons()
74 main()
Lines 12-34 define the xpm_label_box() helper function which creates a horizontal box with a border width of 2 (lines 14-15), populates it with an image (lines 22-23) and a label (line 26).
Lines 36-70 define the Buttons class. Lines 41-70 define the instance initialization method which creates a window (line 43), sets the title (line 45), connects the "delete_event" and "destroy" signals (lines 48-49). Line 55 creates the button without a label. Its "clicked" signal gets connected to the callback() method in line 58. The xpm_label_box() function is called in line 61 to create the image and label to put in the button in line 64.
The xpm_label_box() function could be used to pack xpm's and labels into any widget that can be a container.
The Button widget has the following signals:
pressed - emitted when pointer button is pressed within Button widget released - emitted when pointer button is released within Button widget clicked - emitted when pointer button is pressed and then released within Button widget enter - emitted when pointer enters Button widget leave - emitted when pointer leaves Button widget