PyGobject简单示例

Posted sanxiaochengyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyGobject简单示例相关的知识,希望对你有一定的参考价值。

第一个例子

这个示例将创建一个(默认大小200x200pixel)空窗口,如下图所示

#!/usr/bin/env python3
# Created by xiaosanyu at 16/6/11
# Chapter 001
TITLE = "Empty Window"
DESCRIPTION = "show a empty window"
import gi

gi.require_version('Gtk', '3.0')
from gi.repository import Gtk


def main():
    win = Gtk.Window()
    win.connect("delete-event", Gtk.main_quit)
    win.show_all()
    Gtk.main()


if __name__ == "__main__":
    main()

接下来我们逐行来解释这个例子

import gi

gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

先导入gtk模块,这样我们才能使用其中的类和函数。
如果用户系统中安装有多个版本的GTK+,这里我们需要引用的的是GTK+3而不是其它版本的库,这正是gi.require_version(‘Gtk’, ‘3.0’)此句的用途。

接下来创建一个空的窗口

win = Gtk.Window()

紧随其后的是连接到窗口的删除事件,确保如果我们单击x的时候可以关闭应用程序。
接着就显示这个窗口

win.show_all()

最后进入gtk的main方法,开始循环处理事件

Gtk.main()

经典HelloWorld小程序

这是PyGObject版本的经典的“Hello World”程序

#!/usr/bin/env python3
# Created by xiaosanyu at 16/6/13
# section 002
TITLE = "HelloWorld"
DESCRIPTION = """
simple example, show a Window just has a Button
"""
import gi

gi.require_version('Gtk', '3.0')
from gi.repository import Gtk


class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Hello World")

        self.button = Gtk.Button(label="Click Here")
        self.button.connect("clicked", self.on_button_clicked)
        self.add(self.button)

    @staticmethod
    def on_button_clicked(widget):
        print("Hello World")


def main():
    win = MyWindow()
    win.connect("delete-event", Gtk.main_quit)
    win.show_all()
    Gtk.main()


if __name__ == "__main__":
    main()

与上一个例子不同的是,我们定义了一个自己的MyWindow类,它继承了*Gtk.Window*类

class MyWindow(Gtk.Window):

在类的构造方法中,调用了父类的构造方法,并且指定了title属性(窗口的标题)

Gtk.Window.__init__(self, title="Hello World")

接下来三行,定义了一个按钮,并连接到它的点击事件(当点击按钮时执行的方法),然后将它添加到窗口中。

self.button = Gtk.Button(label="Click Here")
self.button.connect("clicked", self.on_button_clicked)
self.add(self.button)

相应的当你点击按钮的时候,就会调用on_button_clicked()方法,打印”Hello World”

def on_button_clicked(self, widget):
    print("Hello World")

接下来类的外面几句,非常类似于上面的简单的例子, 我们创建一个MyWindow的窗口类实例来代替Gtk.Window

窗口位于屏幕中央

#!/usr/bin/env python3
# Created by xiaosanyu at 16/6/13
# section 003
TITLE = "Center Window"
DESCRIPTION = """
This window is located in the middle of screen,and set the window size
"""
import gi

gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk


class MyWindow(Gtk.Window):
    WIDTH, HEIGHT = 200, 100

    def __init__(self):
        Gtk.Window.__init__(self, title="Center Window")
        self.set_size_request(self.WIDTH, self.HEIGHT)
        self.move((Gdk.Screen.width() - self.WIDTH) / 2, (Gdk.Screen.height() - self.HEIGHT) / 2)
        self.button = Gtk.Button(label="Click Here")
        self.button.connect("clicked", self.on_button_clicked)
        self.add(self.button)

    @staticmethod
    def on_button_clicked(widget):
        print("Hello World")


def main():
    win = MyWindow()
    win.connect("delete-event", Gtk.main_quit)
    win.show_all()
    Gtk.main()


if __name__ == "__main__":
    main()

与上一个例子相比多了三行

WIDTH, HEIGHT = 200, 100

定义长度和宽度

self.set_size_request(self.WIDTH, self.HEIGHT)

设置窗口大小。

self.move((Gdk.Screen.width() - self.WIDTH) / 2, (Gdk.Screen.height() - self.HEIGHT) / 2)

将窗口移动到屏幕中间

说明:本系列文章主要参考官方文档和zetcode网站。





代码下载地址:http://download.csdn.net/detail/a87b01c14/9594728

以上是关于PyGobject简单示例的主要内容,如果未能解决你的问题,请参考以下文章

在Pygobject GTK3中使用Gtk.GLArea

如何使用 GTK3 和 PyGObject 绘制 GdkPixbuf

Linux 上的 cx_freeze PyGObject 应用程序

用 pygobject 编写 D-Bus 服务?

PyGObject GTK+ 3 - 文档?

Windows 上的 PyGObject