如何在python中使用pyqt5将QSlider添加到主窗口的工具栏

Posted

技术标签:

【中文标题】如何在python中使用pyqt5将QSlider添加到主窗口的工具栏【英文标题】:How to add QSlider to toolbar in mainwindow using pyqt5 in python 【发布时间】:2018-11-11 01:28:09 【问题描述】:

我现在在 python 中使用 PyQt5 为我的程序开发 GUI。我在工具栏中添加了一些 QAction,例如开始、暂停和停止图标。但是,我不知道如何在主窗口的工具栏中添加 QSlider。我更喜欢将 QSlider 添加到由红色矩形标记的位置。谢谢!

【问题讨论】:

【参考方案1】:

QToolBar 具有允许您添加小部件的addWidget() 方法:

from PyQt5 import QtCore, QtWidgets

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        toolbar = self.addToolBar("toolbar")
        toolbar.addAction("start")
        toolbar.addAction("pause")
        toolbar.addAction("stop")
        self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
        toolbar.addWidget(self.slider)

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

【讨论】:

酷!它对我有用。但是如何调整此滑块的大小?我的意思是它对我来说太长了。我已经尝试过 toolbar.setGeometry 功能,但它不起作用。还有一个问题,你知道toolbar.SetFoucusPolicy这个函数是做什么的吗?感谢您的帮助 @JiaweiLu 如果要设置固定宽度可以使用setFixedWitdh(),例如self.slider.setFixedWidth(100),另一方面,SetFocusPolicy建立焦点如何获取widget的策略,例如通过按小部件、使用 TAB 键等读取doc.qt.io/qt-5/qwidget.html#focusPolicy-prop。另一方面,如果我的回答没有忘记将其标记为正确,如果您不知道该怎么做,请查看tour,这是最好的感谢方式。 出现一个问题,我们可以使用对齐方式,例如toolbar.addWidget(self.slider, alignment=QtCore.Qt.AlignCenter)。我认为这不会简单地起作用。这个slider 可以左对齐还是居中对齐?

以上是关于如何在python中使用pyqt5将QSlider添加到主窗口的工具栏的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5:添加lineEdit的子类QSlider(用于在QtDesigner中提升)?

PyQt5:QSlider valueChanged 事件延迟

PyQt5 - 让 QSpinBox 缩小,以便 QSlider 可以在 QHBoxLayout 中扩展? [复制]

PyQt5 组件之QSlider

PyQt5-QSlider(滑动条)控件使用

PyQt5 - 实时 QSlider