【问题标题】:PyQt5 event.button() - Middle mouse to close tab prevents tabs being selected on OS XPyQt5 event.button() - 鼠标中键关闭选项卡可防止在 OS X 上选择选项卡
【发布时间】:2021-07-17 20:28:43
【问题描述】:

我正在将一个为 Windows 编写的 Python 程序移植到 Mac,我遇到了 Qt.MidButton 函数的问题。

class MyTabBar(QTabBar):
    def __init__(self):
        super(MyTabBar, self).__init__()

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.MidButton:
            self.tabCloseRequested.emit(self.tabAt(event.pos()))

选项卡被绘制到选项卡栏中,并且 mouseReleaseEvent 在 OSX 上按预期工作(单击鼠标中键时关闭选项卡)但是它不允许用户通过左键单击在选项卡之间切换。如果关闭功能被禁用,用户可以在标签之间点击。

【问题讨论】:

    标签: python macos pyqt5


    【解决方案1】:

    问题是由覆盖mouseReleaseEvent 方法引起的,并且不调用 super 正在消除默认行为。解决办法是调用super:

    class MyTabBar(QTabBar):
        def mouseReleaseEvent(self, event):
            if event.button() == Qt.MidButton:
                self.tabCloseRequested.emit(self.tabAt(event.pos()))
            super(MyTabBar, self).mouseReleaseEvent(event)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2018-07-26
      • 2018-07-30
      • 2018-11-13
      相关资源
      最近更新 更多