• 中文文档
  • GUI模板
  • 项目合作
  • 加入会员
  • 登录 注册
    当前位置: PyQt5> QWidget控件基类学习> 窗口操作案例

    窗口操作案例

    2020年11月23日 07:32 97浏览 PyQt5中文网 QWidget控件基类学习

    窗口操作案例

    ################################
    # PyQt5中文网 - PyQt5全套视频教程 #
    #    https://www.PyQt5.cn/     #
    #         主讲: 村长            #
    ################################
    
    from PyQt5.Qt import *
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("窗口")
            self.setWindowOpacity(0.9)
            self.resize(600,500)
            self.btn_x = 50
            self.btn_y = 30
            self.func_list()
    
        def func_list(self):
            self.btn()
    
        def btn(self):
            self.close_btn = QPushButton(self)
            self.close_btn.setText('关闭')
            self.close_btn.resize(self.btn_x,self.btn_y)
    
            self.max_btn = QPushButton(self)
            # self.max_btn.setText('最大化')
            self.max_btn.resize(self.btn_x,self.btn_y)
    
            self.min_btn = QPushButton(self)
            self.min_btn.setText('最小化')
            self.min_btn.resize(self.btn_x,self.btn_y)
    
            def max_signal():
                if self.isMaximized():
                    self.showNormal()
                    self.max_btn.setText('最大化')
                else:
                    self.showMaximized()
                    self.max_btn.setText('恢复')
            self.max_btn.pressed.connect(max_signal)
            self.close_btn.pressed.connect(self.close)
            self.min_btn.pressed.connect(self.showMinimized)
    
        def resizeEvent(self, QResizeEvent):
            self.close_btn.move(self.width()-self.btn_x,2)
            self.max_btn.move(self.width()-self.btn_x*2,2)
            self.min_btn.move(self.width()-self.btn_x*3,2)
    
        def mousePressEvent(self, QMouseEvent):
            if QMouseEvent.button() == Qt.LeftButton:
                self.mouse_press = True  # 需要在属性中先定义为False
                self.win_x = self.x()  # 窗口位置
                self.win_y = self.y()
                self.m_x = QMouseEvent.globalX()   # 全局位置
                self.m_y = QMouseEvent.globalY()
                # 1.创建一个标记,用来判定鼠标只有在按下之后才能移动
                # 2.窗口的原始坐标
                # 3.鼠标按下的坐标
    
        def mouseMoveEvent(self, QMouseEvent):
            if self.mouse_press:
                move_x = QMouseEvent.globalX()
                move_y = QMouseEvent.globalY()
                xx = move_x - self.m_x
                yy = move_y - self.m_y
                self.move(self.win_x + xx, self.win_y + yy)
            # if 窗口标记 == True:
            # 2.根据鼠标按下的点计算移动量
            # 3.根据移动量和窗口的原始坐标得到新坐标
            # 4.移动串口位置
    
        # def mouseReleaseEvent(self, QMouseEvent):
        #     self.mouse_press = False
        #     # 1.把mousePressEvent中创建的标记重置为False
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = Window()
    
        window.show()
        sys.exit(app.exec_())


    当前位置: 窗口操作案例
    上一篇: 控件交互 下一篇: 窗口事件

    标签栏目

  • 文案文案
  • 文案文案
  • 炫酷界面