Python+PYGObject/PYGtk+CSS样式--2024python示例

news2024/12/24 0:57:19

隔久点不用老是会忘,留个笔记。。

Python+PYGObject/PYGtk,加载 CSS 样式的演示代码

demo 运行的效果截图:

#!/usr/bin/env python3
import sys
import gi

gi.require_version("Gtk", "3.0")
from gi.repository import GLib, Gtk, Gio


class MyApplication(Gtk.Application):
	def __init__(self):
		super().__init__(application_id="com.example.MyGtkApplication")
		GLib.set_application_name('My Gtk Application')

	def do_activate(self):
		window = Gtk.ApplicationWindow(application=self, title="Hello World")
		window.present()
		button = Gtk.Button(label="Python+PyGObject+CSS修改背景色")
		button.set_name("bricks-button")
		button.set_halign(Gtk.Align.CENTER)
		button.set_valign(Gtk.Align.CENTER)
		button.set_size_request(250, 84)
		window.add(button)
		window.show_all()

		strcss="""
			#bricks-button {
				color: #F55;
				background-color: #eef;
				background-image: -gtk-scaled(url('resource://css/brick.png'), url('resource://css/brick2.png'));
				background-repeat: no-repeat;
				background-position: center;
				/* 测试 */
			}
		"""
		
		strpath="./play.css"
		fp = open(strpath, 'w')
		fp.write(strcss)
		fp.close()

		provider = Gtk.CssProvider()
		provider.connect("parsing-error", self.show_css_parsing_error)
		# fname = Gio.file_new_for_path('play.css')
		# provider.load_from_file(fname)
		# https://docs.gtk.org/gtk4/method.CssProvider.load_from_file.html
		# load_from_path, load_from_file, load_from_string
		provider.load_from_path(strpath)
		self.apply_css(window, provider)

	def show_css_parsing_error(self, provider, section, error):
		print(error.message)

	def apply_css(self, widget, provider):
		Gtk.StyleContext.add_provider(widget.get_style_context(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

		if isinstance(widget, Gtk.Container):
			widget.forall(self.apply_css, provider)


app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)

官方文档:CssProvider — GNOME Python API

Deprecated since version 4.12: Use load_from_string or load_from_bytes instead

Styling GTK3 in Python with CSS (Shallow Thoughts)

控件对应的CSS选择器名称(Built-in Class Names)

css = 'button { background-color: #f00; }'

CSS选择器名称可以改(User-set Class Names)

    button_context = button.get_style_context()
    button_context.add_class("whitebutton")

控件名称,映射为 HTML 标签的ID,在CSS中使用井号选择器
(Widget Names, like CSS ID)

    label = gtk.Label()
    label.set_use_markup(True)
    label.set_line_wrap(True)
    label.set_name("red_label")
    mainbox.pack_start(label, False, False, 0)
    css = '#red_label { background-color: #f00; }'

dflabel = gtk.Label() 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1636676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

飞书API(6):使用 pandas 处理数据并写入 MySQL 数据库

一、引入 上一篇了解了飞书 28 种数据类型通过接口读取到的数据结构,本文开始探讨如何将这些数据写入 MySQL 数据库。这个工作流的起点是从 API 获取到的一个完整的数据,终点是写入 MySQL 数据表,表结构和维格表结构类似。在过程中可以有不同…

大型企业总分支多区域数据传输,效率为先还是安全为先?

大型企业为了业务拓展需要,会在全国乃至全球各地设立分公司和办事机构,以便更好地处理当地事务,并进行市场的开拓和客户维护,此时,企业内部就衍生出了新的业务需求,即多区域数据传输。 多区域很难准确定义&…

C++相关概念和易错语法(10)(定位new、模板)

1.定位new 我们使用类来实例化对象,开辟空间的时候会自动去调用它的构造函数。但在那篇博客我就特意强调过,使用a.A()的方式是错误的,A()根本不会被识别为一个构造函数,而会被识别为A类型。因此我们要注意最好在实例化对象&#…

test4282

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

ChatGPT 网络安全秘籍(一)

原文:zh.annas-archive.org/md5/6b2705e0d6d24d8c113752f67b42d7d8 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 在不断发展的网络安全领域中,由 OpenAI 推出的 ChatGPT 所代表的生成式人工智能和大型语言模型(LLMs&#xf…

首页最新 多IP浏览器防关联:如何配置多个独立且稳定的IP地址?

在互联网时代,IP地址的重要性不言而喻。然而,IP关联问题却成为一项令人担忧的隐私和安全挑战。针对这个问题,多IP浏览器是一种解决方案,可以帮助用户单独配置多个独立且稳定的IP地址,有效地防止IP关联。 一、IP关联是…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(七)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 14 节) P14《13.ArkUI组件-自定义组件》 将可变部分封装成组件的成员变量: 1、首先给标题添加两个图标&am…

百川crm系统 教育crm系统 一款高效的培训机构管理系统

在教育培训行业日益竞争激烈的今天,如何精准把握客户需求、提升服务质量、实现客户价值最大化,成为了每一家教育培训机构都必须面对的问题。为此,一款高效、智能的CRM客户管理系统成为了教育培训机构不可或缺的得力助手。本文将为您详细介绍这…

使用xshell工具连接ubuntu的root账户被拒绝的解决方法

问题描述: 我在使用xshell工具远程连接Ubuntu虚拟机的过程中,如果连接的是的普通用户则xshell工具可以正常连接,但是当我向连接ubuntu系统的root用户,即便是密码输入正确但还是不能连接成功。不能连接成功的截图如下: …

C#---使用Coravel实现定时任务

Coravel是一款框架轻,使用简单,支持秒级定时任务。 1.添加NuGet引用 2.定义自己的工作任务 using Coravel.Invocable; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Thread…

【navicat】oracle library is not loaded 问题复现和解决方案

问题原因:客户端oci版本安装错误,navicat需要64位的oci,但是使用32位的oci。 解决方案:官网下载64位oci进行配置。本次演示的解决多了splplus,其实不必要安装也能运行。 首先判断是否数据库已经打开 尝试使用splplus连接数据库 1…

MYSQL自联结

文章目录 查找:生产ID为DTNTR物品的供应商,生产的其他物品。子查询自联结比较 查找:生产ID为DTNTR物品的供应商,生产的其他物品。 子查询 SELECTprod_id,prod_name FROMproducts WHEREvend_id ( SELECT vend_id FROM product…

静电纺聚丙烯腈(PAN)纳米纤维膜

静电纺聚丙烯腈(PAN)纳米纤维膜是通过静电纺丝技术制备的一种纳米级纤维膜材料。静电纺丝技术利用高压电场使带电的聚合物溶液或熔体在喷丝口形成细流,经过拉伸、固化后形成纳米纤维,最终收集形成纳米纤维膜。 PAN纳米纤维膜具有以…

Unity涂鸦纹理实现

文章目录 前言实现过程UV坐标和UI坐标对齐修改像素代码 前言 心血来潮实现下场景中提供一张纹理进行涂鸦的功能。 最终实现效果: 实现过程 UV坐标和UI坐标对齐 这里的纹理使用了UGUI的Canvas进行显示,所以这里使用一张RawImage。 因为Unity的视口坐标是以左下角…

微服务之SpringCloud AlibabaSeata处理分布式事务

一、概述 1.1背景 一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题 but 关系型数据库提供的能力是基于单机事务的,一旦遇到分布式事务场景,就需要通过更多其他技术手段来解决问题。 全局事务:…

SOLIDWORKS2021:革新设计界的里程碑,引领您迈向数字化制造未来

在2021年,SOLIDWORKS 2021的发布犹如一股清新的创新之风,吹遍了整个设计与工程领域。作为业界领先的3D CAD解决方案,SOLIDWORKS 2021不仅巩固了其在设计软件领域的领导地位,更以前所未有的方式激发了设计者的创造力与生产力。亿达…

Flask教程3:jinja2模板引擎

文章目录 模板的导入与使用 模板的导入与使用 Flask通过render_template来实现模板的渲染,要使用这个方法,我们需要导入from flask import rander_template,模板中注释需放在{# #}中 模板的第一个参数为指定的模板文件名称,如自定…

有关CSS中排版常见问题(清除默认样式问题 + 元素居中问题 + 元素之间的空白问题 + 行内块的幽灵空白问题)

前言:在练习CSS排版的时候,我们经常会遇到一些排版上的问题,那么我们如何去解决这些问题呢?本篇文章给出了一些新手在练习排版时候可能会遇到的问题的解决方案。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我…

1天搞定uniApp+Vue3+vite+Element UI或者Element Plus开发学习,使用vite构建管理项目,HBuilderX做为开发者工具

我们通常给小程序或者app开发后台时,不可避免的要用到可视化的数据管理后台,而vue和Element是我们目前比较主流的开发管理后台的主流搭配。所以今天石头哥就带大家来一起学习下vue3和Element plus的开发。 准备工作 1,下载HBuilderX 开发者…

Python 可以对数据进行哪些可视化?

Python 可视化 一、条形图(或柱状图) 1.代码如下: import matplotlib.pyplot as plt import pandas as pddf pd.DataFrame({County:[America,Canada,Australia,Germany,French,China],GDP:[80,30,70,80,60,75] })plt.bar(df[County],df[G…