程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮2输出消息、按钮3可退出

发布于2019-08-19 14:58     阅读(1101)     评论(0)     点赞(3)     收藏(4)


pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮三可退出

目标:设计一个含有三个按钮的窗口,点击按钮2弹出消息,点击按钮3退出

在这里插入图片描述
如果是使用的anacoda那么自带qtdesiger,搜索qt.exe即可,建议使用everything进行搜索。如qt不能打开,参考:https://blog.csdn.net/weixin_43245453/article/details/90580002

第一步骤![在这里插入图片描述](https://img-blog.csdnimg.cn/20190603214922723.gif
新建一个widget
在这里插入图片描述
1559567451131

第二步:

在建立好的窗口之上,拖动三个Labe和三个QpushButton到窗口中去,QPushButton小部件提供了一个命令按钮。如下图所示

在这里插入图片描述

1559567423313

第三步骤:

在这一步之前需要对信号和槽有一定的认识,信号一般是按钮触发,而槽一般是定义的函数或者系统自带的功能(自我理解,望大佬指正)。在qtdesiger设计好界面之后,我们会在另外写一个程序去调用,而此时我们就需要把信号和槽链接起来,使用connect,此时你按下定义的按钮,那么按钮就会发出信号给你指定的槽,槽就是你指定的方法,因此此时就会调用你写的方法。

对各个LabelQpushButton进行自定义,分别改变objectNametextobjetNname需要设定一个自己能记得住的名字,因此在qtdesiger中仅仅是窗口界面,而逻辑的书写仍然需要自己编写,这个objectName是被用来作为信号使用。

在这里插入图片描述

1559567580528

分别对QpushButtonLabel进行自定义,QpushButtonobjectName分别改为button_1button_3button_2labelobjectName可以不进行更改,text更改显示如下
在这里插入图片描述
1559568327021

然后将文件保存,我保存的为stest.ui,需要对其转化为py文件才能进行调用,因此需对其进行转换

pyuic5 -o stest.py stest.ui
  • 1

stets.py中的代码如下:

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

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

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(695, 523)
        self.button_1 = QtWidgets.QPushButton(Form)
        self.button_1.setGeometry(QtCore.QRect(290, 70, 75, 23))
        self.button_1.setObjectName("button_1")
        self.button_2 = QtWidgets.QPushButton(Form)
        self.button_2.setGeometry(QtCore.QRect(290, 200, 75, 23))
        self.button_2.setObjectName("button_2")
        self.button_3 = QtWidgets.QPushButton(Form)
        self.button_3.setGeometry(QtCore.QRect(290, 310, 75, 23))
        self.button_3.setObjectName("button_3")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(130, 70, 54, 12))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(140, 210, 54, 12))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(Form)
        self.label_3.setGeometry(QtCore.QRect(140, 330, 54, 12))
        self.label_3.setObjectName("label_3")

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

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.button_1.setText(_translate("Form", "按钮1"))
        self.button_2.setText(_translate("Form", "按钮2"))
        self.button_3.setText(_translate("Form", "按钮3"))
        self.label.setText(_translate("Form", "1"))
        self.label_2.setText(_translate("Form", "2"))
        self.label_3.setText(_translate("Form", "3"))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

第四部:新建一个.py文件调用

# -*- coding: utf-8 -*-
"""
Created on Mon Jun  3 21:31:18 2019

@author: innduce
"""

from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox,QFileDialog
from stest import Ui_Form
import sys

class MyMain(QWidget,Ui_Form):#QWidget是因为创建的是QWidget类,Ui_Form创建窗口Form的objectName
    def __init__(self):
        super(MyMain, self).__init__()
        self.setupUi(self)

if __name__ =="__main__":
    app = QApplication(sys.argv)
    main = MyMain()
    main.show()#显示窗口
    sys.exit(app.exec_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

结果:
在这里插入图片描述
1559569090836

现在你点击按钮不会有任何变化,因为并没有对着三个按钮建立信号和槽,现在对按钮2、按钮3建立信号和槽

from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox,QFileDialog
from stest import Ui_Form
import sys

class MyMain(QWidget,Ui_Form):
    def __init__(self):
        super(MyMain, self).__init__()
        self.setupUi(self)
        self.button_2.clicked.connect(self.tj)#建立信号和槽,button_2即为按钮2的objectName,tj为槽也就是自定义的方法
        self.button_3.clicked.connect(self.close)#close为内置方法(关闭)
        
    def tj(self):
        print('正在点击按钮2')

if __name__ =="__main__":
    app = QApplication(sys.argv)
    main = MyMain()
    main.show()
    sys.exit(app.exec_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

此时在点击按钮2就会在窗口显示:、点击按钮3就会自动退出
在这里插入图片描述
1559569464270



所属网站分类: 技术文章 > 博客

作者:胡龙茶

链接:https://www.pythonheidong.com/blog/article/48838/e7a1318ad04cd25dd1c8/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)