【PyQt5学习笔记】PyQt5入门学习

QtDesigner程序设计逻辑,图来源于『嗡嗡』:https://www.wongwonggoods.com/author/admin/
【PyQt5学习笔记】PyQt5入门学习_第1张图片
将.ui文件转换为.py文件:

pyuic5 -x test.ui -o UI.py

检查UI.py文件是否如我们在QtDesigner上设计的一样:

python UI.py

之后编写controller.py文件,为界面上的我们加入的Widgets添加功能
之后执行controller.py文件验证:

python controller.py

我们一般使用上会使用 QTextEdit作为文字显示
使用 QPlainTextEdit 來进行文字 input 处理

我们可以使用QFileDialog 来开启每个作业系统的档案功能

安装cv2库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

controller.py函数封装思想
(就跟图书馆什么都有,只是你能不能有效率的快速找到你要的东西一样)
统一命名格式set, update:

1.set 开头的function:可以外部呼叫,为修改事件的开头
2.__update 开头的function:皆为private function,不可外部呼叫,只作为更新画面使用

主要分装这些函数,并遵守以下定义规则:

1.set_instance_name:使用者可以call,去修改一些想要的变化,并在此实作复杂功能与算法
2.__update_instance_name:private function,不希望使用者去call,主要只负责单纯的更新info,而不实作任何复杂功能或算法

利用QTimer来进行自动更新,QTimer 的使用方式很简单,主要我们需要设定一个timeout 时间,每经过一次timeout,我们的程式就会做一次指定的事情

QThread,也同样的是让主程式在执行的同时,能够同时有其他的支线任务可以独立运行!

UI.py文件如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test4.ui'
#
# Created by: PyQt5 UI code generator 5.14.1
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(90, 100, 541, 231))
        font = QtGui.QFont()
        font.setFamily("Ubuntu Mono")
        font.setPointSize(36)
        self.label.setFont(font)
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "TextLabel"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

controller.py文件如下:

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

from PyQt5 import QtCore
from PyQt5.QtWidgets import QMainWindow, QFileDialog
from PyQt5.QtCore import QTimer

import time
import os

from UI import Ui_MainWindow

class MainWindow_controller(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setup_control()

    def setup_control(self):
        self.timer=QTimer() # init QTimer
        self.timer.timeout.connect(self.run)    # when timeout, do run one
        self.timer.start(1)    # start Timer, here we set '1 ms' while timeout one time
        self.time_counter = 0   # init time counter 

    def run(self):
        self.ui.label.setText(str(self.set_time_counter_format(self.time_counter))) # show time_counter(by format)
        self.time_counter += 1

    def set_time_counter_format(self, time_counter):
        ms = time_counter % 1000
        total_sec = max(0, (time_counter - ms)//1000)
        hour = max(0, total_sec//3600)
        minute = max(0, total_sec//60 - hour * 60)
        sec = max(0, (total_sec - (hour * 3600) - (minute * 60)))
        return f"{hour}:{minute:0>2}:{sec:0>2}.{ms:0>3}"    # 我们抓住「:」冒号后的就是格式设定内容,「0」表示补0,「>」表示靠右,「2(3)」表示总共2(3)位

start.py文件如下:

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

from PyQt5 import QtWidgets
from controller_timer import MainWindow_controller

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow_controller()
    window.show()
    sys.exit(app.exec_())

对视窗的控制
只有缩小/关闭(取消放大)

Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint

只有放大/关闭(取消缩小)

Qt.WindowMaximizeButtonHint | Qt.WindowCloseButtonHint

只有关闭(取消放大缩小)

Qt.WindowCloseButtonHint

QFame属性:
【PyQt5学习笔记】PyQt5入门学习_第2张图片

你可能感兴趣的:(PyQt5,qt,学习,python,qt5)