首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使QToolTip消息持久?

如何使QToolTip消息持久?
EN

Stack Overflow用户
提问于 2017-06-09 17:31:55
回答 1查看 1.4K关注 0票数 3

单击该按钮后,我希望使qtooltip消息持久。我计划稍后用qtimer来隐藏它,但问题是,一旦我移动鼠标光标离开按钮rect,消息就消失了,我想让它停留在那里,直到稍后我调用hideText()

代码语言:javascript
复制
from PyQt4 import QtGui, QtCore
from functools import partial

class MyDialog(QtGui.QDialog):

    def __init__(self, parent=None):
        super(MyDialog, self).__init__(parent)
        layout = QtGui.QVBoxLayout()
        btn = QtGui.QPushButton('Push Me')
        layout.addWidget(btn)
        self.setLayout(layout)

        btn.clicked.connect(partial(self.showFloatingMessage,'This is a long message'))

    def showFloatingMessage(self, message='', delay=500):

        desktop = QtGui.QApplication.desktop()
        screen_num = desktop.screenNumber(QtGui.QCursor.pos())
        screen_rect = desktop.screenGeometry(screen_num)
        QtGui.QToolTip.showText(screen_rect.center(), message, None, screen_rect)


app = QtGui.QApplication([])

dialog = MyDialog()
dialog.show()

app.exec_()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-09 20:46:07

一个可能的解决方案是使用QLabel作为QToolTip,我们通过启用Qt.ToolTip标志来做到这一点。就你而言:

代码语言:javascript
复制
from PyQt4 import QtGui, QtCore


class MyDialog(QtGui.QDialog):

    def __init__(self, parent=None):
        super(MyDialog, self).__init__(parent)
        layout = QtGui.QVBoxLayout()
        btn = QtGui.QPushButton('Push Me')
        layout.addWidget(btn)
        self.setLayout(layout)

        btn.clicked.connect(lambda: self.showFloatingMessage('This is a long message', 5000))

    def showFloatingMessage(self, message='', delay=500):
        desktop = QtGui.QApplication.desktop()
        screen_num = desktop.screenNumber(QtGui.QCursor.pos())
        screen_rect = desktop.screenGeometry(screen_num)

        lb = QtGui.QLabel(self)
        lb.setWindowFlags(QtCore.Qt.ToolTip)
        lb.setText(message)
        lb.move(screen_rect.center())
        lb.show()
        QtCore.QTimer.singleShot(delay, lb.hide)


app = QtGui.QApplication([])

dialog = MyDialog()
dialog.show()

app.exec_()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44463700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档