PYQT5 的操作--【1】

PYQT5 的操作–【1】

部分内容参考 来源博主:
https://xiaosongshine.blog.csdn.net/
https://blog.csdn.net/weixin_45961774

"""
from PyQt5.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget, QFileDialog
from PyQt5.QtGui import QPixmap
from PyQt5 import QtGui, QtCore
from PyQt5.QtGui import QCursor
"""
# 部分在之后使用

First : Initialize Application

# 初始化应用对象 其中sys.argv是来自命令行的参数列表
# 这是用来控制应用启动的方法
app = QApplication("sys.argv")  
# 这是PyQt5所有用户节目面类的基础类,有默认构造方式
# 默认构造方法没有父类,没父类的widget组件被视为窗口使用**
window = QWidget()
# 对此widget组件大小进行调整,宽250像素,高150像素
window.resize(250,150)
# 这是用来设置窗口的标题,显示在标题栏中
window.setWindowTitle("Name")
# 设置宽度
# 视频中是一千像素,自行更改 
# window.setFixedWidth(1000) 
# 设置背景风格颜色(利用分号结束该语句)
window.setStyleSheet("background: #161219;")
# 展示,创建在内存中
window.show()
# 指定关闭内容
sys.exit(app.exec())

OUTPUT :

在这里插入图片描述

Second : Set An Icon

# 在左上角应该有一个图标
# 接下来是展示应用图标,和一些新方法
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
    """
    继承QWidget类
    """
    def __init__(self):
        super().__init__()  # 返回父类对象并调用
        self.initUI()  # 调用一个方法
     
    def initUI(self):
        """
        .setGeometry() 前两参数是窗口的x,y轴位置(位置是以左上角为(0,0)向右(x)下(y)为正的)
        后两参数是宽度和高度,类似融合了resize()和move()
        .setWindowTitle() 设置名
        .setWindowIcon(QIcon()) 是左上角应用图标(传入路径)
        """
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Icon')
        self.setWindowIcon(QIcon('传入图片路径'))     
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

OUTPUT :

Third : Display A Prompt Text

from PyQt5.QtWidgets import (QWidget, QToolTip,
                             QPushButton, QApplication)
from PyQt5.QtGui import QFont
......
def initUI(self):
    # 这里是静态方法设置文字,使用了SansSerif字体 和 10像素
    QToolTip.setFont(QFont('SansSerif', 10))
    # 创建提示框,其中使用富文本格式(很明显,使得QWidget变粗体的标签文本)
    self.setToolTip('This is a <b>QWidget</b> widget')  # 当鼠标指在窗口,就会出现的提示框
    # 创建一个按钮,并且把提示框设置在按钮身上
    btn = QPushButton('Button', self)
    btn.setToolTip('This is a <b>QPushButton</b> widget')  # 当鼠标指在按钮上。就会出现提示框 
    # 改变按钮大小sizeHint()给了他一个推荐的大小
    btn.resize(btn.sizeHint())
   	# 移动在了窗口上的位置(50,50)
    btn.move(50, 50)
    # 窗口位置和大小
    self.setGeometry(300, 300, 300, 200)
    # 窗口名字
    self.setWindowTitle('Name')   
    self.show()
......

OUTPUT : 在这里插入图片描述

Forth : .Connect()

该内容在下一章(PYQT5 的操作–【2】)会有比较多的例子

除了使用右上角X按键关闭

这里使用程序关闭,有关触及信号和槽机制;信号(理解为事件)由对象发出去的信息,:(理解为事件函数)接收信息,其实就是一个方法。

使用方法:在普通的函数声明之前,加上标记,再通过connect函数把信号与槽 连接起来。后续只要调用 信号函数,就可以***触发***连接好的信号或槽函数。(信号也可以当作槽)

QPushButton(string text, QWidget parent ``= None``)

text是按钮中显示的内容呢,parent参数是放置按钮组件的,这里会是QWidget组件。

大多数组件都有父类,没有父类的组件是顶级窗口******

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication  # 用于控制应用程序的运行
......
def initUI(self):   
    # 创建一个退出按钮
	qbtn = QPushButton('Quit', self)
    """
    这里一个如果点击了按钮,clicked信号会被发送。槽可以是Qt内置的槽或者是python的一个方法调用。QCoreApplication包含主事件循     环;用来处理和传递所有事件。QCoreAppli由QCoreApplication创建。.instance()方法返回一个实例化对象,使用quit()方法,将程     序结束。
    个人理解为:将点击事件关联到退出功能的函数。
    事件通信发生在发生者(按钮)和接受者(应用对象)。
    """
    qbtn.clicked.connect(QCoreApplication.instance().quit)
 	# 按键自动调整大小
    qbtn.resize(qbtn.sizeHint())
 	# 按键位置
    qbtn.move(50, 50)   
    # 窗口位置和宽度,高度
    self.setGeometry(300, 300, 250, 150)
    # 窗口名字
    self.setWindowTitle('Quit button')   
    self.show()

......

OUTPUT :

def initUI(self):
    self.num = 1
    self.label = QLabel("1", self) 
    self.button = QPushButton("Button", self)
	# 实例化一个QVBoxLayout对象(在后边第七节内容会记录到)	
    self.v_lay = QVBoxLayout() 
    self.v_lay.addWidget(self.label)
    self.v_lay.addWidget(self.button)
    # 连接信号和槽
    self.button.clicked.connect(self.change_label) 
    # 调用窗口的setLayout方法将总布局设置为窗口的整体布局
    self.setLayout(self.v_lay) 
    self.show()
def change_label(self):
    """
    每次点击加15
    """
    self.num += 15
    self.label.setText(f"{self.num}") # 改变文本控件的内容

OUTPUT:

在这里插入图片描述
在这里插入图片描述

Fifth : Message Box

import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication
......
	def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Message box')
        self.show()
	
    def closeEvent(self, event):
		"""
		在关闭一个QWidget时,QCloseEvent类事件会生成。
		这里重新实现处理方法
		"""
        # 不难看出,参数1是窗口名称,2是内容提示语,3是按钮集合,4是默认按钮
        # 将按钮点击结果返回存在reply中
        reply = QMessageBox.question(self, 'Message',
                                     "Are you sure to quit?", QMessageBox.Yes |
                                     QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
            
        else:
            event.ignore()
......

OUTPUT :

在这里插入图片描述
在这里插入图片描述

Sixth : Set The On-screen Centred Window

import sys
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication
# QDesktopWidget类提供有关用户桌面的信息,例如其总大小,屏幕数,每个屏幕的几何形状等。
每个屏幕的几何形状
......
def initUI(self):
        self.resize(250, 150)
        # 调用放置函数
        self.center()
        self.setWindowTitle('Center')   
        self.show()

def center(self):
        
        fg = self.frameGeometry() # 获得应用窗口的框架
   
        # 算出相对于显示器的绝对值。并且从这个绝对值中→↓
        centre_ = QDesktopWidget().availableGeometry().center() # 获得screen中心点
        fg.moveCenter(centre_)  # 将框架中心移动到 screen中心点
        self.move(fg.topLeft())  # 把应用窗口左上角移动到矩形的左上角的点
......

这是frameGeometry()img
图片来源博主.

OUTPUT : 在这里插入图片描述

Seventh : Add input boxes

① Nested

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QHBoxLayout, QLineEdit
......
def initUI(self):
        self.resize(250, 150)
        self.setWindowTitle('Add input boxes')  
        # 创建 带有"内容"的标签
        self.inputlabel1 = QLabel("  ID:", self)
        self.inputlabel2 = QLabel(" pwd:", self)
        # 创建 输入控件
        self.inputline1 = QLineEdit(self)
        self.inputline2 = QLineEdit(self)
        
        # 嵌套布局调整
        # 子布局(实例化水平布局管理器)
        self.h1_lay = QHBoxLayout()
        self.h2_lay = QHBoxLayout()
        # 假定这是总布局,在下面的整体布局中表现(实例化垂直布局管理器)
        self.v_lay = QVBoxLayout()
        
        # 开始添加组件
        self.h1_lay.addWidget(self.inputlabel1)  # 水平布局标签和输入框
        self.h1_lay.addWidget(self.inputline1)
        self.h2_lay.addWidget(self.inputlabel2)  # 同上
        self.h2_lay.addWidget(self.inputline2)
       	# 垂直布局(在垂直方向使用addLayout()添加刚才的水平布局)
        self.v_lay.addLayout(self.h1_lay)
        self.v_lat.addLayout(self.h2_lay)
        
        # 调用窗口的setLayout方法将总布局设置为窗口的整体布局
        self.setLayout(self.v_lay) 
        self.show()
......
"""
这里的镶嵌方式为:
大框架是垂直分布
第一行的小框架是水平分布

当然也有另外一种分布情况(与上相反)
"""

OUTPUT :

② FormLayout (more accessible )

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QFormLayout
......
    def initUI(self):
        ......
        # 实例化一个QFormLayout对象
        self.f_lay = QFormLayout()
        
        # 第一个参数文本控件,第二个参数输入型控件
        self.f_lay.addRow(self.inputlabel1, self.inputline1)
        self.f_lay.addRow(self.inputlabel2, self.inputline2)

        # 调用窗口的setLayout方法将总布局设置为窗口的整体布局
        self.setLayout(self.f_lay)
        self.show()
......

OUTPUT : 在这里插入图片描述

位置似乎和上边不一样

③ GridLayout

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QGridLayout
......
def initUI(self):
        ......
        login_butn = QPushButton("LOGIN", self)
        
        self.g_layout = QGridLayout()
        # 坐标以左上方为零点,符合x→为正,y↓为正
        self.g_layout.addWidget(self.inputlabel1, 0, 0)  # 前两个参数是坐标
        self.g_layout.addWidget(self.inputline1, 0, 1)
        self.g_layout.addWidget(self.inputlabel2, 1, 0)
        self.g_layout.addWidget(self.inputline2, 1, 1)
        self.g_layout.addWidget(login_button, 2, 0, 1, 2)  # 后两个参数是高和宽 
        
        self.setLayout(self.g_lay)
        self.show()
......

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: PyQt5Python编程语言的一种GUI库,用于创建桌面应用程序。它是由Riverbank Computing开发的,为开发者提供了丰富的GUI元素和功能,使他们能够轻松地构建各种用户界面。 而PyQt5-sip是PyQt5的一部分,是一个用于生成Python绑定代码的代码生成器。它将C++头文件转换为Python模块,使开发者能够在Python中使用C++框架和库。PyQt5-sip负责将QObject、QEvent等类和对象转换为Python可调用的代码。 PyQt5PyQt5-sip之间的关系可以简单地理解为:PyQt5-sip是PyQt5的一个重要组成部分,它提供了与C++代码的交互能力,使得PyQt5能够与底层的Qt库进行通信。在安装PyQt5时,PyQt5-sip会自动包含在内,因此我们不需要单独安装或管理PyQt5-sip。 对于开发者而言,了解PyQt5PyQt5-sip的版本非常重要。这是因为PyQt5PyQt5-sip的版本必须相互兼容,以确保代码能够正确地运行。如果您使用的PyQt5版本与PyQt5-sip不兼容,可能导致一些错误或功能失效。因此,在使用PyQt5时,我们需要确保选择合适的PyQt5-sip版本与之配套。 总结来说,PyQt5是一款强大的GUI库,而PyQt5-sip是PyQt5的重要组成部分,用于生成与C++代码交互的Python绑定代码。了解并选择合适的PyQt5PyQt5-sip版本对于确保顺利开发和运行PyQt5应用程序是必要的。 ### 回答2: PyQt5PyQt5-sip 是两个与 Python 语言结合使用的库。这两个库的版本是相互关联的。 PyQt5 是基于 Qt 库的 Python 封装,可以用于开发图形界面应用程序。它提供了丰富的 GUI 组件和功能,可以通过 Python 代码来创建和控制界面。 PyQt5-sip 是 PyQt5 的依赖库,它是用于处理 Python 对象和 Qt 对象之间的转换和通信的工具。它实际上是 PyQt5 的一部分,负责生成包装 Qt 类的 Python 类的代码。 这两个库的版本是相关的,因为 PyQt5-sip 的版本必须与 PyQt5 的版本相匹配。如果版本不匹配,可能会导致库之间的不兼容性和错误。因此,在使用 PyQt5 时,你需要根据 PyQt5 的版本来选择相应的 PyQt5-sip 版本。 通常,你可以通过以下命令来安装最新版本的 PyQt5PyQt5-sip: ``` pip install PyQt5 ``` 然后,PyQt5-sip 会自动安装为 PyQt5 的依赖项。 总的来说,PyQt5PyQt5-sip 是用于 Python GUI 开发的重要工具。在使用时需要注意版本匹配,以确保两者能够正常工作。 ### 回答3: PyQt5是一个Python绑定的Qt库,它允许开发者通过Python语言来开发跨平台的图形用户界面(GUI)应用程序。 而pyqt5-sip是PyQt5的一个SIP模块,用于将C++库和Python语言进行交互。它是一个必需的依赖项,需要与PyQt5配套使用。 PyQt5-sip是由Riverbank Computing提供的一款工具,它通过SIP(一个Python/C++通信框架)来实现C++和Python的互操作性。SIP工具将C++代码转换成Python代码,使得开发人员可以在Python中直接调用C++代码和库。 在使用PyQt5时,我们需要安装和配置PyQt5pyqt5-sip两个软件包。PyQt5提供了丰富的Qt类和方法,用于创建各种类型的GUI应用程序。而pyqt5-sip则是在PyQt5中作为连接器的角色,它将C++对象转换为Python对象,并使得Python能够直接调用C++代码和库,实现了二者之间的桥梁。 需要注意的是,PyQt5pyqt5-sip的版本需要匹配,才能保证二者的兼容性。因此,在安装PyQt5pyqt5-sip时,应该选择合适的版本,并确保它们能够正确地配合使用。 总的来说,PyQt5是一个功能强大的库,用于开发Python GUI应用程序,而pyqt5-sip是其所依赖的一个模块,用于实现C++和Python之间的互操作性。它们共同工作,帮助我们使用Python语言开发出跨平台的GUI应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JamePrin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值