01 PyGTK 的第一步
在本教程的这部分里,我们将进行我们编程的第一步。我们将创建示例程序。
Simple example
第一个代码示例是一个非常简单的
Code:center.py
#!/usr/bin/python
# ZetCode PyGTK tutorial
#
# This is a trivial PyGTK example
#
# author: jan bodnar
# website: zetcode.com
# last edited: February 2009
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.connect("destroy", gtk.main_quit)
self.set_size_request(250, 150)
self.set_position(gtk.WIN_POS_CENTER)
self.show()
PyApp()
gtk.main()
这段代码展示了一个位于屏幕中心的窗口。
import gtk
我们导入gtk模块。在这里,我们用对象来创建GUI应用程序。
class PyApp(gtk.Window):
我们的程序基于PyApp类,它继承自Window。
def __init__(self):
super(PyApp, self).__init__()
这是构造函数,它初始化我们的程序。它也通过super()函数回调它的父构造函数。
self.connect("destroy", gtk.main_quit)
我们连接destroy信号到main_quit()函数。当我们点击窗口标题栏的关闭按钮或者按下ALt+F4,destroy信号将会被调用。窗口将会被销毁,但是程序没有被停止。如果你从命令行启动这个例子,你会看到这种情况。我们通过调用main_quit()函数退出程序,这是很好的做法。
self.set_size_request(250, 150)
我们设置窗口的尺寸为250×150px.
self.set_position(gtk.WIN_POS_CENTER)
这一行使窗口位居屏幕的中心。
self.show()
现在我们显示这个窗口。这个窗口直到我们调用show()方法,才会是可见的。
PyApp()
gtk.main()
我们创建了我们的程序的实例,并且开始了主循环。
Icon
在下一个示例中,我们将显示程序的图标。大多数的窗口管理器会在窗口标题栏左上角和任务栏上显示图标。
Code:icon.py
#!/usr/bin/python
# ZetCode PyGTK tutorial
#
# This example shows an icon
# in the titlebar of the window
#
# author: jan bodnar
# website: zetcode.com
# last edited: February 2009
import gtk, sys
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Icon")
self.set_size_request(250, 150)
self.set_position(gtk.WIN_POS_CENTER)
try:
self.set_icon_from_file("web.png")
except Exception, e:
print e.message
sys.exit(1)
self.connect("destroy", gtk.main_quit)
self.show()
PyApp()
gtk.main()
以上代码示例展示了程序图标。
self.set_title("Icon")
我们为这个窗口设置一个标题。
self.set_icon_from_file("web.png")
set_icon_from_file()方法是为窗口设置一个图标。图片被从磁盘当前工作目录被加载。
图片:icon
Buttons
在下个例子中,我们将进一步提高我们的PyGTK库编程技巧。
Code :buttons.py
#!/usr/bin/python
# ZetCode PyGTK tutorial
#
# This example shows four buttons
# in various modes
#
# author: jan bodnar
# website: zetcode.com
# last edited: February 2009
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Buttons")
self.set_size_request(250, 200)
self.set_position(gtk.WIN_POS_CENTER)
btn1 = gtk.Button("Button")
btn1.set_sensitive(False)
btn2 = gtk.Button("Button")
btn3 = gtk.Button(stock=gtk.STOCK_CLOSE)
btn4 = gtk.Button("Button")
btn4.set_size_request(80, 40)
fixed = gtk.Fixed()
fixed.put(btn1, 20, 30)
fixed.put(btn2, 100, 30)
fixed.put(btn3, 20, 80)
fixed.put(btn4, 100, 80)
self.connect("destroy", gtk.main_quit)
self.add(fixed)
self.show_all()
PyApp()
gtk.main()
我们在窗口上展示了4个不同的按钮。我们将看见容器部件(container widgets)和子部件(child widgets)之间的不同,并且将会更改子部件的一些属性(properties )。
btn1 = gtk.Button("Button")
一个Button就是一个子部件。子部件被放置在容器内。
btn1.set_sensitive(False)
我们使这个按钮不敏感(insensitive)。这意味着,我们不能点击它了,它也不能被选择、聚焦等。这个部件图形化地变灰。
btn3 = gtk.Button(stock=gtk.STOCK_CLOSE)
第三个按钮在它的区域里显示了一个图片。PyGTK库中有一个内置的图片库,我们可以使用它。(此处可以参考The gtk Class Reference)
btn4.set_size_request(80, 40)
这里我更改了按钮的尺寸。
fixed = gtk.Fixed()
Fixed部件是一个不可见的容器部件(container widget)。它的用途是用来包含其它子部件。
fixed.put(btn1, 20, 30)
fixed.put(btn2, 100, 30)
...
这里我们将按钮部件放置到fixed容器部件。
self.add(fixed)
我们设置Fixed容器成为我们的Window部件的主容器。
self.show_all()
要么我们调用show_all()方法,要么就对每个部件,包括容器,调用show()方法。
图片:Buttons
Tooltip
一个提示文本(Tooltip)就是在应用程序中对一个部件用途的建议。它能够被用来提供额外的帮助。
Code:tooltips.py
#!/usr/bin/python
# ZetCode PyGTK tutorial
#
# This code shows a tooltip on
# a window and a button
#
# author: jan bodnar
# website: zetcode.com
# last edited: February 2009
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Tooltips")
self.set_size_request(250, 200)
self.set_position(gtk.WIN_POS_CENTER)
self.connect("destroy", gtk.main_quit)
self.fixed = gtk.Fixed()
self.add(self.fixed)
button = gtk.Button("Button")
button.set_size_request(80, 35)
self.fixed.put(button, 50, 50)
self.set_tooltip_text("Window widget")
button.set_tooltip_text("Button widget")
self.show_all()
PyApp()
gtk.main()
在这个例子中,我们对一个窗口和一个按钮各设置了一个提示文本(tooltip)。
self.set_tooltip_text("Window widget")
button.set_tooltip_text("Button widget")
用set_tooltip_text()方法做这项工作。
图片:Tooltips
在这章中,我们用PyGTK编程库创建了第一个程序。