栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python PyQt5学习笔记 有注释

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python PyQt5学习笔记 有注释

Hello World

例1,简单的窗口
import sys
from PyQt5.QtWidgets import QApplication, QWidget
# 这里引入了PyQt5.QtWidgets模块,这个模块包含了基本的组件。

if __name__ == '__main__':

    app = QApplication(sys.argv)#每个PyQt5应用都必须创建一个应用对象。sys.argv是一组命令行参数的列表
    w = QWidget()#窗口
    w.resize(550, 450)#resize()方法能改变控件的大小,这里的意思是窗口宽250px,高150px
    w.move(300, 300)#移动
    w.setWindowTitle('Simple')#设置标题
    w.show()

    sys.exit(app.exec_())

例2,带窗口图标
class Example(QWidget):

    def __init__(self):
        super().__init__()
        ...


面向对象编程最重要的三个部分是类(class)、数据和方法。我们创建了一个类的调用,这个类继承自QWidget。这就意味着,我们调用了两个构造器,一个是这个类本身的,一个是这个类继承的。super()构造器方法返回父级的对象。__init__()方法是构造器的一个方法。

setGeometry(坐标的x,y,窗口大小的宽,高)把窗口放到屏幕上并且设置窗口大小(resize()和move()的合体)

# import sys
# from PyQt5.QtWidgets import QApplication, QWidget
# from PyQt5.QtGui import QIcon
#
# class Example(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.show()
# if __name__ == '__main__':
#     app = QApplication(sys.argv)
#     ex = Example()
#     sys.exit(app.exec_())
例3,提示框
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
    QPushButton, QApplication)
from PyQt5.QtGui import QFont


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        # QToolTip.setFont(QFont('SansSerif', 10))

        self.setToolTip('这是背景提示')

        btn = QPushButton('Button', self)
        btn.setToolTip('这里是按钮提示')
        btn.resize(btn.sizeHint())
        btn.move(50, 50)
        but2=QPushButton('第二个按钮',self)
        but2.setToolTip('按钮二提示')
        but2.resize(but2.sizeHint())
        but2.move(200,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_())

QToolTip.setFont(QFont('SansSerif', 10))
这个静态方法设置了提示框的字体,我们使用了10px的SansSerif字体。


self.setToolTip('This is a QWidget widget')
调用setTooltip()创建提示框可以使用富文本格式的内容。


btn = QPushButton('Button', self)
btn.setToolTip('This is a QPushButton widget')
创建一个按钮,并且为按钮添加了一个提示框。


btn.resize(btn.sizeHint())
btn.move(50, 50)
调整按钮大小,并让按钮在屏幕上显示出来,sizeHint()方法提供了一个默认的按钮大小。

例4,关闭窗口

关闭一个窗口最直观的方式就是点击标题栏的那个叉,这个例子里,我们展示的是如何用程序关闭一个窗口。这里我们将接触到一点single和slots(插槽)的知识。

本例使用的是QPushButton组件类。

QPushButton(string text, QWidget parent = None)

Copied!

text参数是想要显示的按钮名称,parent参数是放在按钮上的组件,在我们的 例子里,这个参数是QWidget。应用中的组件都是一层一层(继承而来的?)的,在这个层里,大部分的组件都有自己的父级,没有父级的组件,是顶级的窗口。

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        qbtn = QPushButton('Quit', self)
        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()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

例5,消息盒子

如果关闭QWidget,就会产生一个QCloseEvent,并且把它传入到closeEvent函数的event参数中。改变控件的默认行为,就是替换掉默认的事件处理。

reply = QMessageBox.question(self, 'Message',
    "Are you sure to quit?", QMessageBox.Yes | 
    QMessageBox.No, QMessageBox.No)
我们创建了一个消息框,上面有俩按钮:Yes和No.第一个字符串显示在消息框的标题栏,第二个字符串显示在对话框,第三个参数是消息框的俩按钮,最后一个参数是默认按钮,这个按钮是默认选中的。返回值在变量reply里。
if reply == QMessageBox.Yes:
    event.accept()
else:
    event.ignore()
这里判断返回值,如果点击的是Yes按钮,我们就关闭组件和应用,否者就忽略关闭事件。

import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication

class Example(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',
            "Are you sure to quit?", 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_())

例6,窗口居中

QtGui.QDesktopWidget提供了用户的桌面信息,包括屏幕的大小。
self.center()
这个方法是调用我们下面写的,实现对话框居中的方法。
qr = self.frameGeometry()
获得主窗口所在的框架。
cp = QDesktopWidget().availableGeometry().center()
获取显示器的分辨率,然后得到屏幕中间点的位置。
qr.moveCenter(cp)
然后把主窗口框架的中心点放置到屏幕的中心位置。
self.move(qr.topLeft())
然后通过move函数把主窗口的左上角移动到其框架的左上角,这样就把窗口居中了。

import sys
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication

class Example(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_())
菜单和工具栏

这个章节,我们会创建状态栏、菜单和工具栏。菜单是一组位于菜单栏的命令。工具栏是应用的一些常用工具按钮。状态栏显示一些状态信息,通常在应用的底部。

主窗口

QMainWindow提供了主窗口的功能,使用它能创建一些简单的状态栏、工具栏和菜单栏。

状态栏

statusBar()方法,创建状态栏。第一次调用会创建一个状态栏,而再次调用会返回一个状态栏对象。showMessage()方法在状态栏上显示一条信息。

self.statusBar().showMessage('Ready')
菜单栏

在示例中,我们创建了只有一个命令的菜单栏,这个命令就是终止应用。同时也创建了一个状态栏。而且还能使用快捷键Ctrl+Q退出应用。


exitAct = QAction(QIcon('exit.png'), '&Exit', self)        
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('Exit application')
QAction是菜单栏、工具栏或者快捷键的动作的组合。上面三行中,前两行创建了一个图标、一个exit的标签和一个快捷键组合,都执行了一个动作;第三行,创建了一个状态栏,当鼠标悬停在菜单栏的时候,能显示当前状态。


exitAct.triggered.connect(qApp.quit)
当执行这个指定的动作时,就触发了一个事件。这个事件跟QApplication的quit()行为相关联,所以这个动作就能终止这个应用。


menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAct)
menuBar()创建菜单栏。这里创建了一个菜单栏,并用addMenu()在上面添加了一个file菜单,用addAction()关联了点击退出应用的事件。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923704.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号