PyQt5学习—3第一个程序

本文介绍了PyQt5的基础知识,包括窗口创建、显示图标、工具提示、关闭窗口、消息框及屏幕居中显示等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

PyQt5中的第一个程序

在PyQt5教程的这一部分中,我们学习了一些基本功能。这些示例显示工具提示和图标,关闭窗口,显示消息框并在桌面上居中显示窗口。

 

简单的例子

这是一个显示小窗口的简单示例。然而,我们可以用这个窗口做很多事情。我们可以调整它,最大化它或最小化它。这需要大量编码。有人已编码此功能。因为它在大多数应用程序中重复,所以不需要再次编码。PyQt5是一个高级工具包。如果我们将在较低级别的工具包中进行编码,则以下代码示例可能很容易拥有数百行。 

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
In this example, we create a simple
window in PyQt5.

"""

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    
    app = QApplication(sys.argv)

    w = QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    
    sys.exit(app.exec_())

上面的代码示例显示了屏幕上的一个小窗口。

<span style="color:#000000">
从PyQt5.QtWidgets 导入sys 导入QApplication,QWidget
</span>

在这里,我们提供必要的进口。基本小部件位于PyQt5.QtWidgets模块中。

<span style="color:#000000">app = QApplication(sys.argv)
</span>

每个PyQt5应用程序都必须创建一个应用程序对象。该sys.argv参数是命令行中的参数列表。Python脚本可以从shell运行。这是我们如何控制脚本启动的一种方式。

<span style="color:#000000">w = QWidget()
</span>

QWidget窗口小部件是基类中PyQt5所有的用户界面对象。我们提供默认构造函数QWidget。默认构造函数没有父级。没有父项的窗口小部件称为窗口。

<span style="color:#000000">w.resize(250,150)
</span>

resize()方法调整窗口小部件的大小。它宽250px,高150px。

<span style="color:#000000">w.move(300,300)
</span>

move()方法将小部件移动到屏幕上x = 300,y = 300坐标处的位置。

<span style="color:#000000">w.setWindowTitle( '简单')
</span>

我们设置窗口的标题setWindowTitle()。标题显示在标题栏中。

<span style="color:#000000">w.show()
</span>

show()方法在屏幕上显示小部件。窗口小部件首先在内存中创建,然后在屏幕上显示。

<span style="color:#000000">sys.exit(app.exec_())
</span>

最后,我们进入应用程序的主循环。事件处理从这一点开始。mainloop从窗口系统接收事件并将它们分派给应用程序小部件。如果我们调用exit() 方法或主窗口小部件被销毁,则mainloop结束。该sys.exit()方法确保干净的退出。将通知环境应用程序如何结束。

exec_()方法有一个下划线。这是因为它exec是一个Python关键字。因此,exec_() 改为使用。

简单

图:简单

应用程序图标

应用程序图标是一个小图像,通常显示在标题栏的左上角。在下面的示例中,我们将展示如何在PyQt5中执行此操作。我们还将介绍一些新方法。

某些环境不会在标题栏中显示图标。我们需要启用它们。 如果您没有看到任何图标,请参阅我在Stackoverflow上获得解决方案的答案

icon.py

<span style="color:#000000">#!/ usr / bin / python3 
# -  *  -  coding:utf-8  -  *  - 

“”“ 
这个例子
在窗口的标题栏中显示一个图标。
“” 
从PyQt5.QtWidgets 

导入系统导入QApplication,QWidget 
从PyQt5.QtGui导入QIcon 


类示例(QWidget):
    
    def __init __(self):
        super().__ init __()
        
        self.initUI()
        
        
    def initUI(self) :
        
        self.setGeometry(
        300,300,300,220 )
        self.setWindowTitle('Icon')self.setWindowIcon(QIcon('web.png'))         
    
        self。显示()
        
        
if __name__ =='__ main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
</span>

前面的示例是以程序样式编写的。Python编程语言支持过程和面向对象的编程风格。PyQt5中的编程意味着在OOP中编程。

<span style="color:#000000">class Example(QWidget):
    
    def __init __(self):
        super().__ init __()
        ...
</span>

面向对象编程中的三个重要事项是类,数据和方法。这里我们创建一个名为的新类Example。本Example类从继承QWidget类。这意味着我们调用两个构造函数:第一个用于Example 类,第二个用于继承的类。该super() 方法返回类的父对象,Example并调用其构造函数。该__init__()方法是Python语言中的构造方法。

<span style="color:#000000">self.initUI() 
</span>

GUI的创建委托给该initUI()方法。

<span style="color:#000000">self.setGeometry(
300,300,300,220 )
self.setWindowTitle('Icon')self.setWindowIcon(QIcon('web.png'))  
</span>

这三个方法都是从QWidget类中继承而来的。在setGeometry()做两件事情:它定位在屏幕上的窗口,并设置其大小。前两个参数是窗口的x和y位置。第三个是宽度,第四个是窗口的高度。事实上,它在一种方法中结合了方法resize()move()方法。最后一个方法设置应用程序图标。为此,我们创建了一个QIcon对象。该QIcon接收要显示的路径,我们的图标。

<span style="color:#000000">if __name__ =='__ main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())  
</span>

创建应用程序和示例对象。主循环开始。

图标

图:图标

显示工具提示

我们可以为任何小部件提供气球帮助。

tooltip.py

<span style="color:#000000">#!/ usr / bin / python3 
# -  *  -  coding:utf-8  -  *  - 

“”“ 
此示例显示
窗口和按钮上的工具提示。
“”” 

进口SYS 
从PyQt5.QtWidgets进口(QWidget的,QToolTip,
    QPushButton,QApplication的)
从PyQt5.QtGui进口QFont     


类示例(QWidget中):
    
    DEF __init __(个体经营):
        超().__的init __()
        
        self.initUI( )
        
        
    def initUI(self):
        
        QToolTip.setFont(QFont('SansSerif',10))
        
        self.setToolTip('这是<b> QWidget </ b>小部件')
        
        btn = QPushButton('Button',self)
        btn.setToolTip('这是<b> QPushButton </ b>小部件')
        btn.resize(btn.sizeHint())
        btn.move(50,50)        
        
        self.setGeometry (
        300,300,300,200 )
        self.setWindowTitle('Tooltips')     self.show()
        
        
if __name__ =='__ main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_ ())
</span>

在这个例子中,我们展示了两个PyQt5小部件的工具提示。

<span style="color:#000000">QToolTip.setFont(QFont('SansSerif',10))
</span>

此静态方法设置用于呈现工具提示的字体。我们使用10pt SansSerif字体。

<span style="color:#000000">self.setToolTip('这是<b> QWidget </ b>小部件')
</span>

要创建工具提示,我们调用该setTooltip()方法。我们可以使用富文本格式。

<span style="color:#000000">btn = QPushButton('Button',self)
btn.setToolTip('这是<b> QPushButton </ b>小部件')
</span>

我们创建一个按钮小部件并为其设置工具提示。

<span style="color:#000000">btn.resize(btn.sizeHint())
btn.move(50,50)       
</span>

正在调整按钮的大小并在窗口上移动。该sizeHint() 方法为按钮提供了建议的大小。

提示

图:工具提示

关上一扇窗户

关闭窗口的明显方法是单击标题栏上的x标记。在下一个示例中,我们将展示如何以编程方式关闭窗口。我们将简要地触摸信号和插槽。

以下是QPushButton我们在示例中使用的窗口小部件的构造函数。

QPushButton(字符串文本,QWidget parent = None)

text参数是将在按钮上显示的文本。这parent是我们放置按钮的小部件。在我们的例子中,它将是一个QWidget。应用程序的小部件形成层次结构。在此层次结构中,大多数小部件都有其父级。没有父母的小工具是顶窗。

quitbutton.py

<span style="color:#000000">#!/ usr / bin / python3 
# -  *  -  coding:utf-8  -  *  - 

“”“ 
这个程序创建一个退出
按钮。当我们按下按钮时,
应用程序终止。

“” 
从PyQt5.QtWidgets 

导入sys 导入QWidget,QPushButton,QApplication 

类示例(QWidget):
    
    def __init __(self):
        super().__ init __()
        
        self.initUI()
        
        
    def initUI(self ):                
        
        qbtn = QPushButton('Quit',self)
        qbtn.clicked.connect(QApplication.instance()。quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50,50)
        
        self.setGeometry(300,300,250,150        )
        self.setWindowTitle('Quit button')     
        self.show()
        
        
if __name__ =='__ main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
</span>

在这个例子中,我们创建一个退出按钮。单击按钮后,应用程序终止。

<span style="color:#000000">qbtn = QPushButton('退出',自我)
</span>

我们创建一个按钮。该按钮是QPushButton 该类的实例。构造函数的第一个参数是按钮的标签。第二个参数是父窗口小部件。父窗口小部件是 Example窗口小部件,它是QWidget继承的。

<span style="color:#000000">qbtn.clicked.connect(QApplication.instance()。退出)
</span>

PyQt5中的事件处理系统是使用信号和插槽机制构建的。如果我们点击按钮,clicked就会发出信号。插槽可以是Qt插槽或任何Python可调用。

QCoreApplication,检索QApplication.instance(),包含主事件循环 - 它处理并调度所有事件。点击的信号连接到quit()终止应用程序的方法。通信在两个对象之间完成:发送方和接收方。发送者是按钮,接收者是应用程序对象。

退出按钮

图:退出按钮

消息框

默认情况下,如果我们单击标题栏上的x按钮,QWidget则会关闭。有时我们想要修改此默认行为。例如,如果我们在编辑器中打开了一个文件,我们对其进行了一些更改。我们会显示一个消息框以确认操作。

messagebox.py

<span style="color:#000000">#!/ usr / bin / python3 
# -  *  -  coding:utf-8  -  *  - 

“”“ 
当我们点击
应用程序窗口的关闭按钮时,

该程序显示一个确认消息框。
“” 
从PyQt5.QtWidgets 

导入sys 导入QWidget,QMessageBox,QApplication 


类示例(QWidget):
    
    def __init __(self):
        super().__ init __()
        
        self.initUI()
        
        
    def initUI (self):                
        
        self.setGeometry(
        300,300,250,150 )         
        self.setWindowTitle('Message box')     self.show()
        
        
    def closeEvent(self,event):
        
        reply = QMessageBox.question(self,'Message',
            “你确定要退出吗?”,QMessageBox.Yes | 
            QMessageBox.No,QMessageBox.No)

        if reply == QMessageBox.Yes:
            event .accept()
        else:
            event.ignore()         
        
        
if __name__ =='__ main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
</span>

如果我们关闭a QWidgetQCloseEvent 则生成。要修改窗口小部件行为,我们需要重新实现closeEvent()事件处理程序。

<span style="color:#000000">reply = QMessageBox.question(self,'Message',
    “你确定要退出吗?”,QMessageBox.Yes | 
    QMessageBox.No,QMessageBox.No)
</span>

我们显示一个带有两个按钮的消息框:是和否。第一个字符串出现在标题栏上。第二个字符串是对话框显示的消息文本。第三个参数指定对话框中出现的按钮组合。最后一个参数是默认按钮。它是最初具有键盘焦点的按钮。返回值存储在reply变量中。

<span style="color:#000000">if reply == QtGui.QMessageBox.Yes:
    event.accept()
else:
    event.ignore()  
</span>

在这里我们测试返回值。如果我们单击Yes按钮,我们接受导致窗口小部件关闭和应用程序终止的事件。否则我们会忽略close事件。

消息框

图:消息框

屏幕上的中心窗口

以下脚本显示了我们如何将窗口置于桌面屏幕中心。

center.py

<span style="color:#000000">#!/ usr / bin / python3 
# -  *  -  coding:utf-8  -  *  - 

“”“ 
这个程序
以屏幕为中心。
” “” 

导入
from PyQt5.QtWidgets的sys import QWidget,QDesktopWidget,QApplication 


类示例(QWidget):
    
    def __init __(self):
        super().__ init __()
        
        self.initUI()
        
        
    def initUI(self):                
        
        self.resize(250, 150)
        self.center()
        
        self.setWindowTitle('Center')     
        self.show()
        
        
    def center(self):
        
        qr = self.frameGeometry()
        cp = QDesktopWidget()。availableGeometry()。center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())
        
        
if __name__ =='__ main__':
    
    app = QApplication(sys。 argv)
    ex = Example()
    sys.exit(app.exec_())
</span>

QDesktopWidget类提供有关用户的桌面信息,包括屏幕尺寸。

<span style="color:#000000">self.center()
</span>

将窗口居中的代码放在自定义 center()方法中。

<span style="color:#000000">qr = self.frameGeometry()
</span>

我们得到一个矩形,指定主窗口的几何形状。这包括任何窗框。

<span style="color:#000000">cp = QDesktopWidget()。availableGeometry()。center()
</span>

我们弄清楚我们的显示器的屏幕分辨率。从这个决议,我们得到了中心点。

<span style="color:#000000">qr.moveCenter(CP)
</span>

我们的矩形已经有它的宽度和高度。现在我们将矩形的中心设置为屏幕的中心。矩形的大小不变。

<span style="color:#000000">self.move(qr.topLeft())
</span>

我们将应用程序窗口的左上角移动到qr矩形的左上角,从而使窗口在屏幕上居中。

在PyQt5教程的这一部分中,我们在PyQt5中创建了简单的代码示例。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值