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简单示例的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 GTK3 和 PyGObject 绘制 GdkPixbuf