当前位置: 首页 > 文档资料 > PyGTK 教程 >

01 PyGTK 的第一步

优质
小牛编辑
129浏览
2023-12-01

在本教程的这部分里,我们将进行我们编程的第一步。我们将创建示例程序。

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编程库创建了第一个程序。