zoukankan      html  css  js  c++  java
  • pyqt5实现窗口跳转并关闭上一个窗口

    关键在于要定义一个关闭窗体的函数colsewin()

    然后将按键与该函数连接(connect)在一起即可

    import sys
    from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication
    
    
    class First(QMainWindow):
        def __init__(self):
            super().__init__()
    
            self.initUI()
        def closewin(self):
            self.close()
    
        def initUI(self):
            self.btn = QPushButton("Button", self)
            self.btn.move(30, 50)
    
            self.setGeometry(300, 300, 500, 500)
            self.setWindowTitle('Event sender')
            self.show()
    
    class Second(QMainWindow):
        def __init__(self):
            super().__init__()
    
            self.initUI()
    
        def initUI(self):
            self.setGeometry(300, 300, 290, 150)
            self.setWindowTitle('Get sender')
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        a = First()
        b = Second()
        a.show()
        a.btn.clicked.connect(a.closewin)
        a.btn.clicked.connect(b.show)
        sys.exit(app.exec_())

    UI.py文件

    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    import sys
    
    class Communicate(QObject):
        closeApp = pyqtSignal()
    
    class Example1(QMainWindow):
        _startPos = None
        _endPos = None
        _isTracking = False
    
        def __init__(self):
            super().__init__()
            self.initUI()
            self.center()
        def closewin(self):
            self.close()
    
        def center(self, screenNum=0):
            '''多屏居中支持'''
    
            screen = QDesktopWidget().screenGeometry()
            size = self.geometry()
    
            self.normalGeometry2 = QRect((screen.width() - size.width()) / 2 + screen.left(),
                                         (screen.height() - size.height()) / 2, size.width(), size.height())
            self.setGeometry((screen.width() - size.width()) / 2 + screen.left(),
                             (screen.height() - size.height()) / 2, size.width(), size.height())
    
    
        def initUI(self):
            self.setFixedSize(QSize(400, 300))
    
            self.setWindowFlags(Qt.FramelessWindowHint)  # 无边框
            btn1 = QPushButton("Button 1", self)
            btn1.move(80, 150)
    
            btn2 = QPushButton("Button 2", self)
            btn2.move(220, 150)
            btn3 = QPushButton("",self)
            btn3.move(0, 0)
            btn4 = QPushButton("", self)
            btn4.move(300, 260)
    
            btn1.clicked.connect(self.buttonClicked)
            btn2.clicked.connect(self.buttonClicked)
            btn3.clicked.connect(self.buttonClicked)
            btn3.clicked.connect(self.closewin)
            btn4.clicked.connect(self.buttonClicked)
            btn4.clicked.connect(self.closewin)
    
            self.statusBar()
    
            self.c = Communicate()
            self.c.closeApp.connect(self.close)
    
            self.setGeometry(300, 300, 290, 150)
            self.setWindowTitle('Event sender')
            self.window().setStyleSheet('''
                QPushButton{
                    border:none;
                    color:black;
                    font-size:20px;
                    height:40px;
                    padding-left:5px;
                    padding-right:10px;
                    text-align:left;
                }
                QPushButton:hover{
                    color:red;
                    border:1px solid #F3F3F5;
                    border-radius:10px;
                    background:LightGray;
                }
                
                QMainWindow{
                    background:gray;
                    border-top:1px solid white;
                    border-bottom:1px solid white;
                    border-left:1px solid white;
                    border-right:1px solid white;
                    border-top-left-radius:12px;
                    border-bottom-left-radius:12px;
                    border-top-right-radius:12px;
                    border-bottom-right-radius:12px;
                }
            ''')
            self.show()
    
        def buttonClicked(self):
            sender = self.sender()
            self.statusBar().showMessage(sender.text() + ' was pressed')
            if sender.text()=="Button 1":
    
                print("执行%s"%sender.text())
            elif sender.text()=="Button 2":
                print("执行%s"%sender.text())
            elif sender.text()=="":
                print("执行%s"%sender.text())
    
                import qt5
                self.qt = qt5.Example()
                self.qt._initUI()
           self.qt.center()
    else: print("执行%s"%sender.text()) import qt5 self.qt=qt5.Example() self.qt._initUI()
           self.qt.center()
    def mouseMoveEvent(self, e: QMouseEvent): # 重写移动事件 self._endPos = e.pos() - self._startPos self.move(self.pos() + self._endPos) def mousePressEvent(self, e: QMouseEvent): if e.button() == Qt.LeftButton: self._isTracking = True self._startPos = QPoint(e.x(), e.y()) def mouseReleaseEvent(self, e: QMouseEvent): if e.button() == Qt.LeftButton: self._isTracking = False self._startPos = None self._endPos = None if __name__ == '__main__': app = QApplication(sys.argv) ex = Example1() sys.exit(app.exec_())

    qt5文件:

    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    import sys
    class Example(QWidget):
        _startPos = None
        _endPos = None
        _isTracking = False
    
        def __init__(self):
            super().__init__()
            self._initUI()
            self.center()
            #self.Use_Qss()
            #self.show()
        def closewindow(self):
            self.close()
    
    
        def center(self, screenNum=0):
            '''多屏居中支持'''
    
            screen = QDesktopWidget().screenGeometry()
            size = self.geometry()
    
            self.normalGeometry2 = QRect((screen.width() - size.width()) / 2 + screen.left(),
                                         (screen.height() - size.height()) / 2, size.width(), size.height())
            self.setGeometry((screen.width() - size.width()) / 2 + screen.left(),
                             (screen.height() - size.height()) / 2, size.width(), size.height())
    
        def _initUI(self):
            #self.resize(800, 400)
            self.setWindowFlags(Qt.FramelessWindowHint)  # 无边框
            #def Use_Qss(self):
            palette = QPalette()
            palette.setBrush(QPalette.Background, QBrush(QPixmap("./p1.jpg")))
            self.setPalette(palette)
            #self.setObjectName("MainWindow")
            # #todo 1 设置窗口背景图片
            #self.setStyleSheet("#MainWindow{border-image:url(.p1.jpg);}")
            # todo 2 设置窗口背景色
            #self.setStyleSheet("#MainWindow{background-color: gray}")
            btn1 = QPushButton("back", self)
            btn1.move(240, 300)
            btn1.setStyleSheet(
                '''QPushButton{
                  border:none;
            color:white;
            background:blue;
            border:1px solid #F3F3F5;
            border-radius:10px;
            font-size:20px;
            height:40px;
            padding-left:5px;
            padding-right:10px;
            text-align:left;
        }
        QPushButton:hover{
            color:black;
            border:1px solid #F3F3F5;
            border-radius:10px;
            background:LightGray;
        }
            ''')
            btn1.clicked.connect(self.buttonClicked)
            btn1.clicked.connect(self.closewindow)
            self.lb1 = QLabel(self)
            qle = QLineEdit(self)
    
            qle.move(60, 300)
            self.lb1.move(60, 40)
            qle.setStyleSheet(
                '''QLineEdit{
                        border:1px solid gray;
                        background:cyan;
                        120px;
                        border-radius:10px;
                        padding:2px 4px;
                        font-family: 微软雅黑,宋体,Arial,Helvetica,Verdana,sans-serif; 
                }''')
            self.lb1.setStyleSheet(
                '''QLabel{
                color:red;
                font-size:60px;
                font-family: 微软雅黑,宋体,Arial,Helvetica,Verdana,sans-serif; 
                }
                '''
            )
    
    
    
            qle.textChanged[str].connect(self.onChanged)
    
            self.setGeometry(600, 300, 480, 370)
            self.setWindowTitle('单行文本')
            self.show()
        def buttonClicked(self):
            import UI
            self.qt = UI.Example1()
            self.qt.initUI()
         self.qt.center()
    def onChanged(self, text): self.lb1.setText(text) self.lb1.adjustSize() def mouseMoveEvent(self, e: QMouseEvent): # 重写移动事件 self._endPos = e.pos() - self._startPos self.move(self.pos() + self._endPos) def mousePressEvent(self, e: QMouseEvent): if e.button() == Qt.LeftButton: self._isTracking = True self._startPos = QPoint(e.x(), e.y()) def mouseReleaseEvent(self, e: QMouseEvent): if e.button() == Qt.LeftButton: self._isTracking = False self._startPos = None self._endPos = None if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())

    效果图:

     btn1按键透明化:

    op =QGraphicsOpacityEffect()
    # 设置透明度的值,0.0到1.0,最小值0是透明,1是不透明
    op.setOpacity(0.5)
    btn1.setGraphicsEffect(op)
       

    效果图:

  • 相关阅读:
    10、函数介绍、函数参数、函数的返回值
    9、bytes类型,文件处理
    8、集合类型、文件处理
    7、列表类型、元组、字典类型
    6、for循环补充、可变类型与不可变类型、基本操作
    5、while循环与for循环
    4、基本运算符、if语法
    3、变量、常量、基本数据类型
    爬虫(一)
    小技能(二)
  • 原文地址:https://www.cnblogs.com/jieliu8080/p/10552510.html
Copyright © 2011-2022 走看看