首页 > 其他分享 >pyGTK实战(1)

pyGTK实战(1)

时间:2023-06-19 21:01:31浏览次数:39  
标签:实战 GTK win self Gtk pyGTK button gi

目录

简介

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

相关文章

  • R语言实战(第三版)全新升级版,超过30万学习者入手的畅销书
    在我刚入学那会儿初次接触R语言,看的第一本工具书就是《R语言实战》,收获良多,当时还只是第二版。最近和人民邮电出版社的好朋友交流发现,他告诉我上个月刚刚出版了《R语言实战第三版》,豆瓣评分9.2,被称为最牛R语言实战书升级版。上面这本书的第1版于2012年出版,距今已经过去1......
  • 实战:求年月日时间前后遇到的坑和解决方式
    前言这周接到一个时间转换任务需要处理,本来没什么问题,后来完成后发现时间有偏差,又重写了一遍代码,感觉很有记录必要性,希望看过的小伙伴可以避坑。照例,先说结论。正确实例:DateTimeFormatterformatter=DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT);LocalDateTimeno......
  • 细说敏捷测试-敏捷实战中的探索
    1什么是敏捷?敏捷开发是一种思想或方法论,就是通过不断迭代开发和增量发布,最终交付符合用户价值的产品敏捷思想源于最初的《敏捷宣言》:【敏捷软件开发宣言】个体和互动高于流程和工具;工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划;《敏捷宣言》代表......
  • Compose能拯救安卓开发吗?Jetpack Compose入门到精通(附资料)含实战、附Demo
    JetpackCompose简述JetpackCompose是用于构建原生AndroidUI的现代工具包。JetpackCompose使用更少的代码,强大的工具和直观的KotlinAPI,简化并加速了Android上的UI开发。这是AndroidDevelopers官网对它的描述。由于Compose基于Kotlin构建,因此可以与Java编程语言完全互操作,并......
  • Jetpack从入门到精通全家桶(含项目实战 附Demo)
    前言开发应用程序就像搭积木。我们对产品业务及功能模块的划分和封装,就像在搭建积木一样。积木不能太大,这不利于修改和拆解;积木也不能太小,否则管理起来可能会很混乱。只有基于稳健、合理的架构,项目才能轻松应对需求的变化,才有可能健康成长。没有良好架构的应用程序,就像没有搭好底......
  • ModelBox实战开发:RK3568实现摄像头虚拟背景
    摘要:本文将使用ModelBox端云协同AI开发套件(RK3568)实现摄像头虚拟背景AI应用的开发。本文分享自华为云社区《ModelBox开发案例-RK3568实现摄像头虚拟背景【玩转华为云】》,作者:AI练习生。本文将使用ModelBox端云协同AI开发套件(RK3568)实现摄像头虚拟背景AI应用的开发。最终运......
  • 【Kotlin】史上超强二合一,Kotlin从入门到精通+高级Kotlin强化实战(附Demo)
    前言Kotlin作为谷歌官方支持的编程语言,目前,不少公司的Android开发工程师岗位表示要有Kotlin基础,同时这也让Kotlin成为了很多人的学习对象。而Kotlin作为Android开发的首选语言,为开发者提供了大量的语法糖和技巧,空指针异常情况也得到了明显改善,使用起来更加顺手,能让开发者更专注于......
  • 快速入门|Flutter完整开发实战详解 谷歌架构师独家分享
    前言这几年在大前端的开发领域,选择跨端方案的公司和部门越来越多,一方面是跨平台的前端框架越来越成熟,另一方面也是因原生开发者正逐年减少。所以,在当下掌握一门跨平台的技术栈还是很有必要的,无论从广度还是从深度都会有所帮助。就目前来说有很多主流的跨平台框架,就比如:Flutter、Rea......
  • 实战!如何在 Jetpack Compose 中拥有一个与众不同的 Modifier
    步入正题!相信大家既然已经学习了Compose,那想必也非常熟悉如何使用Modifer了,由于Compose被Android团推设计的非常容易上手,所以有不了解如何使用的朋友可以去看看文档,即可轻松掌握基础的使用!拥有一个与众不同的Modifier,其实就是实现一个特别功能的Modifier,然后使用它去修饰我们......
  • 谷歌内部流出Jetpack Compose最全上手指南,含项目实战演练!
    简介JetpackCompose是在2019Googlei/O大会上发布的新的库。Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速度。Compose并不是像RecyclerView、ConstraintLayout这种做了一个或者几个高级的UI控件,而是直接抛弃了我们写了N年......