您的位置:首页 > 移动开发 > Objective-C

PyGobject(二)简单示例

2016-07-25 18:53 501 查看
第一个例子

经典HelloWorld小程序

窗口位于屏幕中央

第一个例子

这个示例将创建一个(默认大小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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息