一.继承
上一次我们使用了Qt UIC工具将自制的界面转化为了Image.py代码如下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Image.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
......
该部分代码只是完成了GUI界面的搭建,并未给相关的控件添加功能,但我并不建议在此代码内添加任何代码。因为一旦需要修改GUI界面时,再利用Qt UIC工具将修改后的界面转化为代码,添加的代码都会被清除。
我推荐新建python文件,添加如下代码来完成对上述代码的继承,运行后就能出现自制的界面
from Image import Ui_MainWindow # 此处Image需要根据你自己的命名修改
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
class Window(QMainWindow, Ui_MainWindow): # 继承父类QMainWindow以及Image.py里的Ui_MainWindow
def __init__(self): # 初始化
super().__init__() # 继承父类所有的方法和属性
self.setupUi(self) # 虽然self指向自身类Window,在类Window并没有定义setupUi方法,但是super()继承了父
# 类Ui_MainWindow内的方法setupUi,所以相当于类Window也有该方法
if __name__ == '__main__':
app = QApplication([])
window = Window() # 使用变量名为 window 来创建一个 类Window 的实例
window.show() # 创建 window 对象后,必须使用 .show() 使其可见。
app.exec_() # 事件循环
方法(init)里面存放类的属性(变量)和方法(函数)。self指向类(Window)本身,在类内定义的方法都必须带一个参数self,但在调用该方法时并不需要给其传递参数。
如果对于继承还有self用法不太明白,可以参考阅读以下文章
https://blog.youkuaiyun.com/baidu_31437863/article/details/82288172
二.给按钮控件添加关联的方法(处理函数)
直接上代码:
class Window(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.start_button.clicked.connect(self.start)
def start(self):
print('hello world')
pass
start_button 是控件(button)的 objectName
clicked.connect(self.start) 表示当按钮控件点击时,执行start方法
如果你没有clicked.connect(),则需要安装包PyQt5-stubs后才能用该函数
三.各控件的使用方法
一般使用较多的控件有Push Button , Label , Line Edit , Combo Box等,要想自定义控件的属性功能状态,我们需要知道这些控件内置了哪些方法或信号。
首先我们需要找到该控件属于哪类,在Qt Designer的对象查看器可以查到
找到该控件属于的类后,接下来就需要查找该类内置了哪些信号或函数方法供控件使用。
我就不列出控件内置的信号或函数方法了,大家可以在优快云内输入该类就能找到很多博主的文章介绍了,在此推荐一个博主jia666666的Qt基本控件详解.
赶紧开始你的设计吧!