pyqt入门

1.学习网站
http://code.py40.com/pyqt5/38.html

2.安装
(1)pip install PyQt5
(2)pip install PyQt5-tools (安装qt designer)

在Python的安装目录下可以找到pyuic.exe和pyrcc.exe
主要是用pyuic把qt designer的界面转换成py代码

3.导入qt designer,pyuic

4.使用qt designer设计界面
5.右键点击ui文件,选择external tools,选择pyuic,把ui转成py代码。这里只是界面代码,注意每次使用pyuic生成都会覆盖旧的文件。
6.剩下的和使用C++写的QT差不多。
小例子如下:

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

from PyQt5.QtWidgets import QApplication,QMainWindow,QToolTip,QPushButton,QMessageBox,QDesktopWidget
from PyQt5.QtWidgets import qApp,QAction,QLabel
from PyQt5.QtGui import QFont,QIcon
from PyQt5.QtCore import QCoreApplication,pyqtSignal,QObject

import MyMainWidget
import subwidget
if __name__ == '__main__':
    app = QApplication(sys.argv)  #应用程序对象

    mywidget = MyMainWidget.MyMainWidget()#模块名.函数名
    mywidget.show()

#如果使用qt designer 需要把界面初始化
#MainWindow = QMainWindow()
#ui = Ui_MainWindow()
#ui.setupUi(MainWindow)#setupUi()是由.ui文件生成的类的构造函数(初始化界面)
#MainWindow.show()

    sys.exit(app.exec_())#主窗口销毁或者exit调用时退出主线程循环
#!/usr/bin/python3
#-*- coding:utf-8 -*-

from PyQt5.QtWidgets import QApplication,QMainWindow,QToolTip,QPushButton,QMessageBox,QDesktopWidget
from PyQt5.QtWidgets import qApp,QAction,QLabel
from PyQt5.QtGui import QFont,QIcon
from PyQt5.QtCore import QCoreApplication,pyqtSignal,QObject,Qt
import main_widget
import subwidget

class MyMainWidget(QMainWindow):

    def __init__(self):
        super().__init__() #构造函数

        ui = main_widget.Ui_MainWindow()
        ui.setupUi(self)
        self.setWindowTitle('main')
        self.statusBar().showMessage('状态栏')
        self.setWindowIcon(QIcon('1.jpg'))
        self.mysub = subwidget.Widget()
        self.mysub.mycloseSignal.connect(self.my_sub_slot)
        QToolTip.setFont(QFont('SansSerif', 10))
        ui.pushButton.setToolTip("btn <b>1111</b>")
        ui.pushButton.clicked.connect(QCoreApplication.instance().quit)  # 信号和槽
        ui.pushButton_2.clicked.connect(self.buttonClicked)

        exitAction = QAction(QIcon("1.jpg"), '&Exit')
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit')
        exitAction.triggered.connect(qApp.quit)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        toolBar = self.addToolBar('quit')
        toolBar.addAction(exitAction)

        #self.setCentralWidget(self.mysub)

    def buttonClicked(self):
        sender = self.sender()
        print('clicked slot')
        print(sender.text())
        self.mysub.show()
        self.statusBar().showMessage("打开新窗口")

    def my_sub_slot(self):
        print('sub slot')
        #self.mysub.close()
        self.mysub.hide()
        self.statusBar().showMessage("关闭新窗口")

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.resize(300,200)
        self.move(qr.topLeft())

    def keyPressEvent(self,e):
        if e.key == Qt.key_Escape:
            self.close()

from PyQt5.QtWidgets import QWidget,QLabel,QVBoxLayout,QPushButton,QMessageBox
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtGui import QPixmap

class Widget(QWidget):
    mycloseSignal = pyqtSignal()

    def __init__(self):
        super().__init__()

        self.resize(500,500)

        label=QLabel('1,jpg')
        label.setPixmap(QPixmap('1.jpg'))
        btn = QPushButton('退出')
        vl = QVBoxLayout()
        vl.addWidget(label)
        vl.addWidget(btn)
        self.setLayout(vl)

        btn.clicked.connect(self.btnClicked)

    def btnClicked(self):
        print('subwidget btn clicked')
        self.mycloseSignal.emit()

    def closeEvent(self, event):
        reply = QMessageBox.question('Message', "is quit?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值