目录
简介
PyGTK是一套用Python和C语言编写的GTK+GUI库的包装器。它是GNOME项目的一部分。它为用Python构建桌面应用程序提供了全面的工具。
PyGObject是一个Python包,它为基于GObject的库(如GTK、GStreamer、WebKitGTK、GLib、GIO等)提供绑定。它支持Linux、Windows和macOS,并可与Python 3.7+和PyPy3配合使用。PyGObject是根据LGPLv2.1+许可的。
运行下列命令
pip install PyGObject
hello,world
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
win = Gtk.Window()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
- 引用的是GTK+3,而不是库的任何其他版本,这就是gi.require_version('GTK','3.0')语句的目的。
- 创建空窗体 win
- win.connect连接到窗口的删除事件,以确保如果我们单击x关闭窗口,应用程序将终止。
- show_all()显示窗体
- Gtk.main()启动GTK+处理循环,当窗口关闭时退出
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class MyWindow(Gtk.Window):
def __init__(self):
super().__init__(title="Hello World")
self.button = Gtk.Button(label="单击我")
self.button.connect("clicked", self.on_button_clicked)
self.add(self.button)
def on_button_clicked(self, widget):
print("Hello World")
win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
- 定义自己的Gtk.Windows子类HelloWindow
- HelloWindow类的构造函数调用超类的构造函数,指定标题为Hello World
super().__init__(title="Hello World")
self.button
定义按钮,标题label="单击我"self.button.connect
连接到其单击的信号,self.add(self.button)
将按钮作为子窗口添加到顶级窗口。- 点击按钮,会调用on_button_clickd()。
def on_button_clicked(self, widget):
print("Hello World")
事件驱动
GTK+使用事件驱动的编程模型。GTK+在主循环中等待输入。如果用户执行了一些操作,比如鼠标单击,那么主循环“唤醒”并将事件传递给GTK+。
当小部件接收到一个事件时,它们经常会发出一个或多个信号。
信号通过调用连接到信号的函数来通知程序发生了事情。
这样的函数通常被称为回调。
当调用回调时,通常会采取一些操作——例如,当单击“打开”按钮时,可能会显示一个文件选择器对话框。
回调完成后,GTK+将返回到主循环,等待更多的用户输入。
handler_id = widget.connect("event", callback, data)
widget是创建的小部件的一个实例。接下来是我们感兴趣的事件"event"。每个小部件都有自己可能发生的特定事件。
如果有一个按钮,通常想连接到“点击”事件。这意味着当点击按钮时,就会发出信号。
回调参数是回调函数callback的名称。它包含在发出指定类型的信号时运行的代码。
最后,数据自变量data包括在发出信号时应该传递的任何数据。但是,此参数是完全可选的,如果不需要,可以省略。
函数返回一个数字,用于标识此特定的信号回调对。
需要断开与信号的连接,以便在其所连接的信号的任何未来或当前正在进行的发送期间不会调用回调函数。
widget.disconnect(handler_id
标签:实战,GTK,win,self,Gtk,pyGTK,button,gi
From: https://www.cnblogs.com/waterperl/p/17492162.html