首页 > 其他分享 >pyside6基础学习(一)

pyside6基础学习(一)

时间:2023-11-10 22:56:32浏览次数:33  
标签:__ QMainWindow app 基础 QApplication 学习 pyside6 QPushButton import

pyside6基础学习(一)

参考连接
https://doc.qt.io/qtforpython-6/search.html
https://www.pythonguis.com/tutorials/pyside6-creating-your-first-window/
个人学习记录,参考很多前辈的文章。如果有错误,请指出,我将不胜感激。

运行一个Aplication

from PySide6.QtWidgets import QApplication, QWidget  
  
# Only needed for access to command line arguments  
import sys  
  
# You need one (and only one) QApplication instance per application.  
# Pass in sys.argv to allow command line arguments for your app.  
# If you know you won't use command line arguments QApplication([]) works too.  
app = QApplication(sys.argv)  
  
# Create a Qt widget, which will be our window.  
window = QWidget()  
window.show()  # IMPORTANT!!!!! Windows are hidden by default.  
  
# Start the event loop.  
app.exec()  
  
# Your application won't reach here until you exit and the event  
# loop has stopped.
  1. QApplication可以接收参数,不需要添加的时候QApplication([])也可以
  2. 没有parent的Widgets(控件)默认是不可见的,需要.show()

    Widgets without a parent are invisible by default. So, after creating the window object, we must always call .show() to make it visible. You can remove the .show() and run the app, but you'll have no way to quit it!

  3. app.exec()调用之后会开始事件循环

事件循环

  • 每个 Qt 应用程序的核心都是 QApplication 类。
  • 每个应用程序都需要一个也只有一个QApplication 对象来运行。
  • 该对象包含应用程序的事件循环--管理所有用户与图形用户界面交互的核心循环。

QMainWindow控件

在 Qt 中,任何控件都可以是窗口。
例如,如果用 QPushButton 代替 QtWidget。在之前的示例中,你将得到一个窗口,其中有一个可按下的按钮。

from PySide6.QtWidgets import QApplication, QWidget, QPushButton  
import sys  
 
app = QApplication(sys.argv)  
window = QPushButton()  
window.show()
app.exec()  

使用布局在其他部件中嵌套部件的功能意味着你可以在一个空的 QWidget 中构建复杂的用户界面。
不过,Qt 已经为你准备好了解决方案--QMainWindow。这是一个预制窗口部件,它提供了许多您在应用程序中会用到的标准窗口功能,包括工具栏菜单状态栏可停靠窗口部件等。我们稍后将了解这些高级功能,但现在,我们将在应用程序中添加一个简单的空 QMainWindow。只需要将上方代码中的QPushButton修改为QMainWindow即可,在import中添加上对应的控件
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QMainWindow
但是一般需要自定义窗口,所以最好是用一个子类来实现。
例如:

import sys  
from PySide6.QtCore import QSize, Qt  
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton  
  
  
class MainWindow(QMainWindow):  
    def __init__(self):  
        super().__init__()  
        self.setWindowTitle("My App")  
        button = QPushButton("Press Me!")  
        self.setCentralWidget(button)  
  
  
if __name__ == '__main__':  
    app = QApplication(sys.argv)  
    window = MainWindow()  
    window.show()  
    app.exec_()

  1. 创建一个类,继承于QMainWindow,然后在内部调用父类的初始化方法。

    子类化 Qt 类时,必须始终调用父类的 __init__ 函数,以便 Qt 设置对象。super().__init__()

  2. Qt 核心wdigets总是从 QtWidgets 名称空间导入(from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton),QMainWindow 和 QApplication 类也是如此。
  3. 在使用 QMainWindow 时,我们使用 .setCentralWidget 将窗口部件(此处为 QPushButton)放置在 QMainWindow 中,默认情况下它占据整个窗口(后续可以通过布局来自己设定控件的大小位置)。
    这些控件有哪些方法、属性、信号都可以去官方文档查询。
    在QMainWindow中,官方文档:https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QMainWindow.html#qmainwindow

基本框架

  1. 首先创建一个Form类,继承于QDialog(可以换想要的控件)
  2. 定义__init__方法,调用父类的init方法 super().__init__()
  3. 设定窗口类的一些信息
  4. 主函数中初始化QApplication()
  5. 使用From类生成一个from对象
  6. form.show 展示该窗口类
  7. app.exec() 启动
import sys
from PySide6.QtWidgets import QApplication, QDialog, QLineEdit, QPushButton

class Form(QDialog):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("My Form")


if __name__ == '__main__':
    # Create the Qt Application
    app = QApplication(sys.argv)
    # Create and show the form
    form = Form()
    form.show()
    # Run the main Qt loop
    sys.exit(app.exec())

标签:__,QMainWindow,app,基础,QApplication,学习,pyside6,QPushButton,import
From: https://www.cnblogs.com/d3solate/p/17825262.html

相关文章

  • 2023-2024-1 20231402《计算机基础与程序设计》第7周学习总结
    2023-2024-120231402《计算机基础与程序设计》第7周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第7周作业这个作业的目标自学计算机科学概论第8章,《C语言程序设计》第6章作业正......
  • 2023-2024 20231404高伟光《计算机基础与程序设计》第七周学习总结
    作业信息作业班级23级14班作业要求第七周要求作业目标自主学习计算机概论第八章,学习c语言第六章作业正文此博客教材内容总结计算机概论:应用层涉及了数据结构,本章介绍了栈(先进后出),队列(先进先出),列表(线性,无线),树,二叉树(每个节点只有一个父母节点,两个子节点),二......
  • 【PySide6】QChart笔记(二)—— QBarSeries的使用
    一、QBarSeries简介1.官方描述https://doc.qt.io/qtforpython-6/PySide6/QtCharts/QBarSeries.html【译注:官方文档内容过于简洁,表明完全仅继承了QAbstractBarSeries,且没有扩展任何属性、方法和信号。因此,直接参考QAbstractBarSeries的文档:】https://doc.qt.io/qtforpython-6/......
  • 学习随笔(设计模式:简单工厂模式)
    内容:今天学习了设计模式中的简单工厂模式。收获:1.将所有相同类似的对象抽象,然后获得一个基类2.再根据该基类封装成不同的派生类3.当创建对象时,该对象可能是基类的任意一个派生类对象,那么到底是哪一个派生类呢?此时就可以通过工厂模式,用一个单独的类来做这个创造实......
  • 机器学习——语言模型和数据集
     语言模型 马尔可夫模型和n元语法 自然语言统计 读取长序列数据由于序列数据本质上是连续的,因此我们在处理数据时需要解决这个问题。在 8.1节中我们以一种相当特别的方式做到了这一点:当序列变得太长而不能被模型一次性全部处理时,我们可能希望拆分这样的序列方......
  • NumPy基础使用
    复合类型"""第一层必须是元组默认情况下,需要每个元素的数据类型保持一致如果每个元素的元素类型不一致,需要分别指定每个元素的类型指定元素类的方式:方式一:np.array(data,dtype="3str,int,3int")方式二:简写np.array(data,dtype="U3,i,3i")字符码......
  • 【学习笔记】随机化算法
    例题P7831[COCI2009-2010#3]PATULJCI题解首先对每个颜色开一个vector<int>保存其位置,随后对于一段区间\([l,r]\)和一个颜色\(c\),可以很快速的求出\([l,r]\)内\(c\)出现的次数。然后进行随机化,每次随机一个元素并查看他的出现次数。若随机\(t\)次,那么随机不到的概率是\(\frac......
  • 渗透学习1.1 信息收集之google hacking
    0x0前言  google是一款非常强大的搜索引擎,相对来说广告较少,查询结果全面,通常我们的使用方式是在搜索框输入想要查询的词汇,一般来说我们很容易搜索到想要的结果,但是Google也可以通过特定的语法对查询结果进行筛选,甚至可以对网页内容,文件,路径,建站模板等进行匹配,便于我们发现可......
  • openGauss学习笔记-119 openGauss 数据库管理-设置数据库审计-设置文件权限安全策略
    openGauss学习笔记-119openGauss数据库管理-设置数据库审计-设置文件权限安全策略119.1背景信息数据库在安装过程中,会自动对其文件权限(包括运行过程中生成的文件,如日志文件等)进行设置。其权限规则如下:数据库程序目录的权限为0750。数据库数据文件目录的权限为0700。ope......
  • 学ai需要哪些基础知识,详细一点
    学习人工智能(AI)需要一系列广泛的基础知识,涉及数学、统计学、计算机科学和机器学习等领域。以下是一份详细的基础知识清单:数学基础:a. 线性代数:了解向量、矩阵、行列式、特征值等概念,因为它们在机器学习中经常出现。b. 微积分:理解导数和积分,因为它们是深度学习等算法的基础。......