QtDesigner & pyqt5 基本使用

这篇博客介绍了QtDesigner和PyQt5的基本使用,包括button和label的多种用法,如单击按钮、保持状态的按钮、显示文字和图片的label,以及如何显示视频。此外,还讲解了文件对话框的使用和在不同主界面之间切换的基础操作。
摘要由CSDN通过智能技术生成


控件基本用法

button

单击普通按钮

button可以说是Qt中与用户交互最基本的控件,最简单的就是单击:

#初始化一个button控件
self.button_inputData = QtWidgets.QPushButton(self.widget)
#设置按钮上文本字体
font = QtGui.QFont()
font.setPointSize(20)
font.setBold(False)
font.setWeight(50)
self.button_inputData.setFont(font)
#设置控件名
self.button_inputData.setObjectName("button_inputData")
#设置按钮上显示的文本
self.button_inputData.setText('这是button显示的内容')
#设置信号-槽的连接,当用户点击该按钮后调用槽函数,参数为函数名
self.button_inputData.clicked.connect(self.button_inputData_clicked_Event)
保持状态的按钮

QToolButton类的按钮是专门为设计工具栏按钮提供的类,可以设置成单击第一次时按钮按下,触发clicked信号,并保持按下状态,直到用户再次点击此按钮,触发clicked信号,并弹起按钮,在程序运行期间任何时候都可检测按钮的“按下/弹起”状态。

设置setCheckable(True)和setAutoExclusive(True)后按钮可保持按下状态,且状态可查询:
self.button.setCheckable(True)
self.button.setAutoExclusive(True)
查询按钮是按下还是弹起的方法是:
self.button_openCamera.isChecked()
按钮按下返回值是True,按钮弹起返回值是False。

应用代码如下:

#QToolButton的初始化设置
self.button_openCamera = QtWidgets.QToolButton(win_recogFaceInVideo)
self.button_openCamera.setGeometry(QtCore.QRect(695, 15, 114, 32))
font = QtGui.QFont()
font.setPointSize(13)
self.button_openCamera.setFont(font)
self.button_openCamera.setCheckable(True)
self.button_openCamera.setAutoExclusive(True)
self.button_openCamera.setPopupMode(QtWidgets.QToolButton.InstantPopup)
self.button_openCamera.setObjectName("button_openCamera")
#设置setCheckable(True)和setAutoExclusive(True)后按钮可保持按下状态,且状态可查询
self.button_openCamera.setCheckable(True)
self.button_openCamera.setAutoExclusive(True)
#设置单击信号的槽函数
self.button_openCamera.clicked.connect(self.recog_in_camera)
#clicked槽函数中可以获取按钮“按下/弹起”的状态
def recog_in_camera(self):
    #如果按钮是按下状态,则执行下面的操作
    if  self.button_openCamera.isChecked():
        #更改此按钮button_openCamera的文本信息
        self.button_openCamera.setText('关闭摄像头')
        #设置另一个按钮button_openVideoFile不可操作
        self.button_openVideoFile.setEnabled(False)
    else:
        #若按钮是弹起状态,则更改此按钮的文本信息
        self.button_openCamera.setText('打开摄像头')

label

label显示文字

label显示文字是空间最基本的用法了,如下:

#初始化一个label控件,参数是父类,也就是承载这个控件的窗口win_recogFaceInVideo
self.label = QtWidgets.QLabel(win_recogFaceInVideo)
#设置控件大小和位置:宽20,高65,左上角坐标(781,406)
self.label.setGeometry(QtCore.QRect(20, 65, 781, 406))
#设置文本字体信息
font = QtGui.QFont()
font.setPointSize(30)
font.setBold(False)
font.setWeight(50)
font.setKerning(True)
self.label.setFont(font)
self.label.setTextFormat(QtCore.Qt.RichText)
#缩放对齐:不缩放、居中对齐
self.label.setScaledContents(False)
self.label.setAlignment(QtCore.Qt.AlignCenter)
#控件名
self.label.setObjectName("label")
#文本内容
self.label.setText('这是label显示的内容')
label显示图片

先给出个示例,实现在label控件中按原比例居中显示图片文件。
代码如下:

def show_img_in_lable_center( label, fname):
    #label表示要用来显示图片的那个标签~
    #fname表示事先获取到的要打开的图片文件名(含路径),可用QtWidgets.QFileDialog.getOpenFileName()获取哈~
    pix_map = QPixmap(fname)
    img_w = pix_map.width()
    img_h = pix_map.height()
    lab_w = label.width()
    lab_h = label.height()
    if (img_w > lab_w) | (img_h > lab_h):
        #若图片宽高大于label宽高,则在label居中显示按图片原始比例缩放后的图片
        w_rate = float(img_w) / float(lab_w)
        h_rate = float(img_h) / float(lab_h)
        if w_rate >= h_rate:
            w = lab_w
            h = int(img_h / w_rate)
        else:
            w = int(img_w / h_rate)
            h = lab_h
    else:
        #若图片宽高都小于label宽高,则按图片原始大小显示
        w = img_w
        h = img_h
    label.setPixmap(pix_map.scaled(w, h))
label显示视频

label显示视频的问题实际就是label定时显示图片,只需要引入一个定时和加入截取视频画面的过程。
网上找到的C++的代码:

       VideoCapture capture;//声明视频读入类
       capture.open(0);//从摄像头读入视频 0表示从摄像头读入
 
       if (!capture.isOpened())//先判断是否打开摄像头
       {
   
           cout<<"can not open";
           c
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值