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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanxiaochengyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值