当前位置: 首页 > news >正文

pyside6总结

文章目录

  • 参考
  • 说明
  • 代码模块化
  • `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 ButtonHolderif __name__ == "__main__":app = QApplication(sys.argv)window = ButtonHolder()window.show()app.exec()
  1. button_holder.py
from PySide6.QtWidgets import QMainWindow, QPushButton, QVBoxLayoutclass ButtonHolder(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("Button Holder")button = QPushButton("Click Me")button.setCheckable(True)   # must for triggering toggledbutton.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 toggledprint("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 buttonprint("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, QButtonGroupclass 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 selfexclusive_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 Widgetapp = QApplication(sys.argv)
window = Widget()
window.show()
app.exec()

http://www.mrgr.cn/news/82151.html

相关文章:

  • vite6+vue3+ts+prettier+eslint9配置前端项目(后台管理系统、移动端H5项目通用配置)
  • Linux实验报告14-Linux内存管理实验
  • 构建JS全栈开发的CMS系统——从零开始搭建前后端
  • 分类模型评估利器-混淆矩阵
  • 教程:从pycharm基于anaconda构建机器学习环境并运行第一个 Python 文件
  • k8s系列--docker拉取镜像导入k8s的containerd中
  • Docker新手:在tencent云上实现Python服务打包到容器
  • 【Unity3d】C#浮点数丢失精度问题
  • 【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(二)
  • 1、pycharm、python下载与安装
  • 软件测试期末复习
  • 基于Python的社交音乐分享平台
  • 4.微服务灰度发布落地实践(消息队列增强)
  • C++ 设计模式:命令模式(Command Pattern)
  • AI与药学 | ChatGPT 在临床药学中的有效性以及人工智能在药物治疗管理中的作用
  • UCAS 24秋网络认证技术 CH15 Kerberos复习
  • leetcode之hot100---148排序链表(C++)
  • pg_wal 目录下 wal 日志文件异常累积过大
  • ACE之ACE_Message_Queue
  • 2、pycharm常用快捷命令和配置【持续更新中】
  • GPT分区 使用parted标准分区划分,以及相邻分区扩容
  • [羊城杯 2024]不一样的数据库_2
  • ultralytics库RT-DETR代码解析
  • 创建型设计模式、结构型设计模式与行为型设计模式 上下文任务通用方案 设计模式 大全
  • Unity Excel转Json编辑器工具
  • GeekPad 智慧屏连接到VirtualBox的Ubuntu虚拟机上的Home-Assistant