pyside6总结

news2025/1/5 10:33:44

文章目录

  • 参考
  • 说明
  • 代码模块化
  • `QMainWindow`和`QWidget`区别
  • 通过`Label`显示图片
    • 将UI文件编译成Python文件
    • 直接导入UI文件
  • 复选框和单选框

参考

  1. Learn Python GUI Development for Desktop – PySide6 and Qt Tutorial

说明

  1. PySide6编程可以分为两大类:QWidgetQML!

代码模块化

  1. main.py
import sys
from PySide6.QtWidgets import QApplication
from button_holder import ButtonHolder

if __name__ == "__main__":
  app = QApplication(sys.argv)
  window = ButtonHolder()
  window.show()
  app.exec()
  1. button_holder.py
from PySide6.QtWidgets import QMainWindow, QPushButton, QVBoxLayout

class ButtonHolder(QMainWindow):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("Button Holder")
    button = QPushButton("Click Me")
    button.setCheckable(True)   # must for triggering toggled
    button.clicked.connect(self.on_click1)
    button.clicked.connect(self.on_click2)
    button.pressed.connect(self.on_press)
    button.released.connect(self.on_release)
    button.toggled.connect(self.on_toggled)   
    self.setCentralWidget(button)
  
  def on_click1(self):
    print("Button clicked")
  
  def on_click2(self, state: bool):  # seems same with toggled
    print("Button clicked:", state)

  def on_press(self):
    print("Button pressed")
  
  def on_release(self):
    print("Button released")
  
  def on_toggled(self, state: bool):  # only triggered by checkable button
    print("Button toggled:", state)

QMainWindowQWidget区别

  1. QMainWindowQWidget多了菜单栏,工具栏,状态栏;
  2. 在向主窗体添加元素(比如按钮)时,QMainWindow可以直接通过setCentralWidget()实现;而QWidget需要通过Layout间接实现;

通过Label显示图片

将UI文件编译成Python文件

  1. Qt DesignerResource Browser里面创建一个资源文件,然后在资源文件中添加需要显示的图片;
  2. Qt Designer添加一个QLabel,在其pixmap属性中添加图片;
  3. 通过pyside6-rcc.exe -o image_rc.py .\image.qrc将资源文件编译成py文件;(注意命名规则:必须是xxx_rc.pyxxx是第一步中创建的资源文件的文件名)
  4. 通过pyside6-uic.exe -o ui_test.py .\test.uiUI文件编译成py文件;
  5. 通过以下代码导入UI:
from PySide6.QtWidgets import QApplication, QWidget
from ui_test import Ui_Form     # ui_test 参考步骤4中生成的文件名; Ui_Form 参考 ui_test.py 文件中的类名;

class MainWindow(QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

app = QApplication([])
window = MainWindow()
window.show()
app.exec()

直接导入UI文件

  1. Qt DesignerResource Browser里面创建一个资源文件,然后在资源文件中添加需要显示的图片;
  2. Qt Designer添加一个QLabel,在其pixmap属性中添加图片;

复选框和单选框

  1. widget.py
from PySide6.QtWidgets import QWidget, QCheckBox, QRadioButton, QHBoxLayout, QVBoxLayout, QGroupBox, QButtonGroup

class Widget(QWidget):
  def __init__(self):
    super().__init__()

    os = QGroupBox("Choose operating system")
    win = QCheckBox("Windows")
    win.clicked.connect(self.win_checked)
    win.setChecked(True)
    linux = QCheckBox("Linux")
    mac = QCheckBox("Mac")

    os_layout = QVBoxLayout()
    os_layout.addWidget(win)
    os_layout.addWidget(linux)
    os_layout.addWidget(mac)
    os.setLayout(os_layout)

    drink = QGroupBox("Choose your favorite drink")
    beer = QCheckBox("Beer")
    beer.toggled.connect(self.beer_checked)
    juice = QCheckBox("Juice")
    coffee = QCheckBox("Coffee")
    beer.setChecked(True)

    exclusive_btn = QButtonGroup(self)  # must self
    exclusive_btn.addButton(beer)
    exclusive_btn.addButton(juice)
    exclusive_btn.addButton(coffee)
    exclusive_btn.setExclusive(True)
    # exclusive_btn.buttonClicked.connect(self.exclusive_checked)
    
    drink_layout = QVBoxLayout()
    drink_layout.addWidget(beer)
    drink_layout.addWidget(juice)
    drink_layout.addWidget(coffee)
    drink.setLayout(drink_layout)

    answer = QGroupBox("Answer")
    answerA = QRadioButton("A")
    answerA.clicked.connect(self.answerA_checked)
    answerB = QRadioButton("B")
    answerC = QRadioButton("C")
    answer_layout = QVBoxLayout()
    answer_layout.addWidget(answerA)
    answer_layout.addWidget(answerB)
    answer_layout.addWidget(answerC)
    answer.setLayout(answer_layout)

    h_layout = QHBoxLayout()
    h_layout.addWidget(os)
    h_layout.addWidget(drink)
    
    v_layout = QVBoxLayout()
    v_layout.addLayout(h_layout)
    v_layout.addWidget(answer)

    self.setLayout(v_layout)

  def win_checked(self):
    if self.sender().isChecked():
      print("Windows is checked")

  def beer_checked(self):
    if self.sender().isChecked():
      print(self.sender().text() + " is checked")

  def answerA_checked(self):
    if self.sender().isChecked():
      print(self.sender().text() + " is checked")

  def exclusive_checked(self):	# How to get the sender info?
    print(self.sender())
  1. main.py
import sys
from PySide6.QtWidgets import QApplication
from widget import Widget

app = QApplication(sys.argv)
window = Widget()
window.show()
app.exec()

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

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

相关文章

springboot-启动流程

by shihang.mai 1. 启动流程图 查看springboot2.3.7源码后绘制下图。 springboot启动流程图 main启动,new SpringApplication()构造方法里面 判断当前应用程序类型reactive、servlet、none获取所有的ApplicationListener对应的对象获取所有的ApplicationContextInit…

Flutter:打包apk,详细图文介绍(一)

困扰了一天,终于能正常打包apk安装了,记录下打包的流程。建议参考我这篇文章时,同时看下官网的构建说明。 官网构建并发布 Android 应用详情 1、AS创建Flutter项目 2、cmd执行命令 生成一个sunluyi.jks的文件,可以自行把sunluyi替…

linux下安装tun模块详细教程

原本是要看tcp/ip协议栈,找到了https://github.com/chobits/tapip这个。然后需要支持tun,完了开始安装。 TUN/TAP是一个虚拟网络设备,用于实现用户态程序和内核网络协议栈之间的数据交互。 1、安装环境 我的系统是ubuntu16.04 VMWare虚拟机&a…

Ajax数据爬取

有时我们用requests 抓取页面得到的结果,可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,而使用requests 得到的结果中并没有这些数据。这是因为 requests 获取的都是原始 HTML 文档,而浏览器中的页面是JavaScript 处理…

Docker 安装与配置 Nginx

摘要 1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。 2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。 2、同时,探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法 3、此外,文章还涵…

SpringCloud微服务架构

文章目录 认识微服务:SpringCloud 服务拆分及远程调用实现夸远程服务调用使用RestTemplateEureka注册中心 搭建EruekaServer注册服务服务发现 Ribbon负载均衡 修改负载均衡规则解饿加载 Nacos注册中心(nacos一部分功能) 服务注册到nacosnacos…

WireShark4.4.2浏览器网络调试指南:TCP传输包分析(七)

概述 在使用Wireshark进行网络分析时,理解每一个数据包的组成部分对于网络分析非常重要。特别是在TCP协议中的“三次握手”过程中,每个数据包会包含多个层次的信息,从帧信息到TCP协议的详细内容。下面是对TCP握手过程中第一个SYN数据包的详细…

kafka使用常见问题

连接不上kafka,报下边的错 org.apache.kafka.common.KafkaException: Producer is closed forcefully.at org.apache.kafka.clients.producer.internals.RecordAccumulator.abortBatches(RecordAccumulator.java:760) [kafka-clients-3.0.2.jar:na]at org.apache.kafka.client…

用uniapp写一个播放视频首页页面代码

效果如下图所示 首页有导航栏&#xff0c;搜索框&#xff0c;和视频列表&#xff0c; 导航栏如下图 搜索框如下图 视频列表如下图 文件目录 视频首页页面代码如下 <template> <view class"video-home"> <!-- 搜索栏 --> <view class…

深入浅出:从入门到精通大模型Prompt、SFT、RAG、Infer、Deploy、Agent

阅读原文 渐入佳境 我们都知道&#xff0c;通过编写一个提示词&#xff08;prompt&#xff09;&#xff0c;我们可以引导大模型生成回答&#xff0c;从而开启愉快的人工智能对话&#xff0c;比如让模型介绍一下卡皮巴拉。上边简图描述了这个过程&#xff0c;我们拆成两部分 pr…

Unity-Mirror网络框架-从入门到精通之Basic示例

文章目录 前言Basic示例场景元素预制体元素代码逻辑BasicNetManagerPlayer逻辑SyncVars属性Server逻辑Client逻辑 PlayerUI逻辑 最后 前言 在现代游戏开发中&#xff0c;网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架&#xff0c;专为多人…

【新方法】通过清华镜像源加速 PyTorch GPU 2.5安装及 CUDA 版本选择指南

下面详细介绍所提到的两条命令&#xff0c;它们的作用及如何在你的 Python 环境中加速 PyTorch 等库的安装。 1. 设置清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这条命令的作用是将 pip &#xff08;Python 的包管理工具&#xf…

自动化测试-Pytest测试

目录 pytest简介 基本测试实例 编写测试文件 执行测试 pytest运行时参数 mark标记 Fixture pytest插件 Allure测试报告 测试步骤 pytest简介 Pytest‌是一个非常流行的Python测试框架&#xff0c;它支持简单的单元测试和复杂的功能测试&#xff0c;具有易于上手、功…

Java-33 深入浅出 Spring - FactoryBean 和 BeanFactory BeanPostProcessor

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

MySQL 服务器简介

通常所说的 MySQL 服务器指的是mysqld程序&#xff0c;当运⾏mysqld后对外提供MySQL 服务&#xff0c;这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容&#xff0c;包括&#xff1a; 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选项。 服务器系统变…

分布式版本管理工具——Git关联远程仓库(github+gitee)

Git远程仓库&#xff08;Github&#xff09;的基本使用 一、前言二、Git远程仓库介绍三、演示1. 关联github远程仓库2. 关联gitee&#xff08;码云&#xff09;远程仓库3. 重命名远程仓库名4. 移除远程仓库 四、结束语 一、前言 古之立大事者&#xff0c;不惟有超世之才&#x…

ZLib库使用详细教程 以及标准ZLib函数和QT自带压缩函数比较

1. 下载Zlib 官网下载地址如下&#xff1a;http://www.zlib.net/ 2. 利用cmake编译zlib 有两种方法可以打开cmake-gui winR输入cmd打开命令行&#xff0c;在命令行中输入cmake-gui可以直接打开应用界面找到你一开始安装cmake的文件夹&#xff0c;在bin子文件夹中双击cmake-…

加载Tokenizer和基础模型的解析及文件介绍:from_pretrained到底加载了什么?

加载Tokenizer和基础模型的解析及文件介绍 在使用Hugging Face的transformers库加载Tokenizer和基础模型时&#xff0c;涉及到许多文件的调用和解析。这篇博客将详细介绍这些文件的功能和它们在加载过程中的作用&#xff0c;同时结合代码片段进行解析。 下图是我本地下载好模…

SpringAI从入门到熟练

学习SpringAI的记录情况 文章目录 前言 因公司需要故而学习SpringAI文档&#xff0c;故将自己所见所想写成文章&#xff0c;供大佬们参考 主要是为什么这么写呢&#xff0c;为何不抽出来呢&#xff0c;还是希望可以用的时候更加方便一点&#xff0c;如果大家有需求可以自行去…

嵌入式系统中C++的基本使用方法

大家好,今天主要给大家分享一下,最近操作C++代码的控制方法。 什么是构造函数?构造函数在对象实例化时被系统自动调用,仅且调用一次。 什么是析构函数?与构造函数相反, 在对象结束其生命周期时系统自动执行析构函数。 第一个:析构函数与构造函数区别 实例代码: #inclu…