PyQt:实现菜单栏的点击拖动效果

一、整体步骤

1.设计UI文件

2.调用显示

3.效果展示

在这里插入图片描述

二、设计UI文件

1.添加 Scroll Area控件,作为菜单栏的布置区域

在这里插入图片描述

2.设置 Scroll Area控件的属性

在这里插入图片描述

3.Scroll Area控件内放置 按钮控件 组成菜单栏

放置
此处,放置了需要了6个按钮,并设置按钮的固定尺寸
在这里插入图片描述

4.Scroll Area设置整体水平布局,必须要有布局

在这里插入图片描述
第6个按钮,使其在Scroll Area控件显示区域之外
在这里插入图片描述

5.生成UI文件,并生成对应的py文件:scroller.py

三、调用显示

窗口文件调用scroller.py显示:from scroller import Ui_Form


from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from scroller import Ui_Form



class main(QMainWindow, Ui_Form):

    def __init__(self):
        super(main, self).__init__()
        self.setupUi(self)

        #菜单栏移动事件...........拓展宽度
        self.scroll_bar = self.scrollArea.horizontalScrollBar()
        self.scrollArea.installEventFilter(self)
        self.last_time_move = 0


    #菜单栏移动
    def eventFilter(self, source, event):
        if event.type() == QEvent.MouseMove:
            if self.last_time_move == 0:
                self.last_time_move = event.pos().x()
            distance = self.last_time_move - event.pos().x()
            self.scroll_bar.setValue(self.scroll_bar.value() + distance)
            self.last_time_move = event.pos().x()
        elif event.type() == QEvent.MouseButtonRelease:
            self.last_time_move = 0
        return QMainWindow.eventFilter(self, source, event)

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = main()
    window.show()
    sys.exit(app.exec_())

运行,即可实现效果。

备注:整体资源免费下载

相关推荐

  1. 顺序表菜单实现

    2024-03-26 05:08:02       37 阅读
  2. shiny实现跳转下一个标签

    2024-03-26 05:08:02       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 05:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 05:08:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 05:08:02       82 阅读
  4. Python语言-面向对象

    2024-03-26 05:08:02       91 阅读

热门阅读

  1. 强化学习:让AI自主学习与决策

    2024-03-26 05:08:02       43 阅读
  2. HTTP协议

    2024-03-26 05:08:02       42 阅读
  3. 消息中间件如何实现高可用

    2024-03-26 05:08:02       47 阅读
  4. 力扣刷题之22.括号生成

    2024-03-26 05:08:02       46 阅读
  5. 【Python】 Python脚本实现某平台视频流下载

    2024-03-26 05:08:02       44 阅读
  6. Redis 缓存穿透是什么?如何缓解缓存穿透?

    2024-03-26 05:08:02       31 阅读
  7. C#手动改变自制窗体的大小

    2024-03-26 05:08:02       32 阅读
  8. 【课程】MyBatisPlus视频教程

    2024-03-26 05:08:02       48 阅读