发布于2019-08-19 14:58 阅读(1301) 评论(0) 点赞(3) 收藏(4)
pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮三可退出
目标:设计一个含有三个按钮的窗口,点击按钮2弹出消息,点击按钮3退出
如果是使用的anacoda那么自带qtdesiger,搜索qt.exe即可,建议使用everything进行搜索。如qt不能打开,参考:https://blog.csdn.net/weixin_43245453/article/details/90580002
第一步骤。在qtdesiger设计好界面之后,我们会在另外写一个程序去调用,而此时我们就需要把信号和槽链接起来,使用connect
,此时你按下定义的按钮,那么按钮就会发出信号给你指定的槽,槽就是你指定的方法,因此此时就会调用你写的方法。
对各个Label
和QpushButton
进行自定义,分别改变objectName
和text
。objetNname
需要设定一个自己能记得住的名字,因此在qtdesiger中仅仅是窗口界面,而逻辑的书写仍然需要自己编写,这个objectName
是被用来作为信号使用。
分别对QpushButton
和Label
进行自定义,QpushButton
的objectName
分别改为button_1
、button_3
、button_2
,label
的objectName
可以不进行更改,text更改显示如下
。
然后将文件保存,我保存的为stest.ui,需要对其转化为py文件才能进行调用,因此需对其进行转换
pyuic5 -o stest.py stest.ui
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"))
第四部:新建一个.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_())
结果:
现在你点击按钮不会有任何变化,因为并没有对着三个按钮建立信号和槽,现在对按钮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_())
此时在点击按钮2就会在窗口显示:、点击按钮3就会自动退出
作者:胡龙茶
链接:https://www.pythonheidong.com/blog/article/48838/e7a1318ad04cd25dd1c8/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!