python-2.7 - 如何使用 PyQT 提示跟随 slider 的处理程序?

标签 python-2.7 qt pyqt pyqt4 qslider

一个简单的问题,我正在寻找这样的pyqt效果:

Jquery UI slider how to make a box follow the handler?

但是那些代码是 JQuery,我正在尝试用 PyQT 来实现它

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):

    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50, 50, 500, 500)
        self.setWindowTitle("PyQT example!")
        slider = QtGui.QSlider(self)
        slider.setOrientation(QtCore.Qt.Horizontal)
        slider.move(50, 50)
        slider.valueChanged.connect(self.value_changed)
        self.show()

    def value_changed(self, value):
        QtGui.QToolTip.showText(QtGui.QCursor.pos(), str(value), self)

app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())

此代码成功地使提示气球跟随光标。
现在可以让提示跟随我的 slider 处理程序吗?

最佳答案

我喜欢@tmoreau 的想法,但最好将新逻辑放入 QSlider 的子类中:

class TipSlider(QtGui.QSlider):
    def __init__(self, *args, tip_offset=QPoint(0, -45)):
        super(QtGui.QSlider, self).__init__(*args)
        self.tip_offset = tip_offset

        self.style = QtGui.QApplication.style()
        self.opt = QtGui.QStyleOptionSlider()

        self.valueChanged.connect(self.show_tip)
        # self.enterEvent = self.show_tip
        # self.mouseReleaseEvent = self.show_tip

    def show_tip(self, _):
        self.initStyleOption(self.opt)
        rectHandle = self.style.subControlRect(self.style.CC_Slider, self.opt, self.style.SC_SliderHandle)

        pos_local = rectHandle.topLeft() + self.tip_offset
        pos_global = self.mapToGlobal(pos_local)
        QtGui.QToolTip.showText(pos_global, str(self.value()), self)

关于python-2.7 - 如何使用 PyQT 提示跟随 slider 的处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31653647/

相关文章:

python - 如何拖放带有自定义项目小部件的 QListWidget 项目?

javascript - beautifulsoup 删除所有内部 javascript

Python - 比较两个存在电子邮件但位于不同行的电子邮件列表

python - 写入 NumPy 内存映射仍会加载到 RAM 内存中

c++ - QT 4.3 在线程之间传递类指针

python - PyQt 中的 os.walk 模拟

python - 检查 python Pandas 数据结构中的重复项

c++ - 在 Qt 中使用基本类型时挂起

linux - 应用程序启动器和输入应用程序名称并从终端运行它有什么区别?

qt - QWebSocketServer 到不同的线程