首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyQt - QDialogButtonBox信号和工具提示

PyQt - QDialogButtonBox信号和工具提示
EN

Stack Overflow用户
提问于 2016-09-29 00:33:56
回答 1查看 11.8K关注 0票数 7

我有几个关于qDialogButtonBox的问题。虽然我的代码仍然有效,但我相信有几个部分可以更好地改进/我在网上找不到多少信息。

代码语言:javascript
运行
复制
class testDialog(QtGui.QDialog):
    def __init_(self, parent=None):
        ...
        self.init_ui()
        self.signals_connection()

    def init_ui(self):
        ...
        self.buttonBox = QtGui.QDialogButtonBox()
        self.buttonBox.addButton("Help", QtGui.QDialogButtonBox.HelpRole)
        self.buttonBox.addButton("Apply", QtGui.QDialogButtonBox.AcceptRole)
        self.buttonBox.addButton("Cancel", QtGui.QDialogButtonBox.RejectRole)
        #

    def signals_connection(self):
        self.test_random.clicked.connect(self.test_rand)

        # Is this the latest/correct way to write it?
        self.buttonBox.accepted.connect(self.test_apply)
        self.buttonBox.rejected.connect(self.test_cancel)
        self.buttonBox.helpRequested.connect(self.test_help)

    def test_apply(self):
        print "I am clicking on Apply"

    def test_cancel(self):
        print "I am clicking on Cancel"
        self.close()

    def test_help(self):
        print "I am clicking for Help!"

我的问题如下:

  1. 在我的函数- signals_connection()下,我为buttonBox编写的行(尽管代码仍然有效)对于我为self.test_random编写的信号来说是完全不同的,而且我无法在网上找到类似的qdialogbuttonbox。我发现了另一种风格-- self.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), self, QtCore.SLOT("accept()")),但我认为那是旧风格??否则,写它的正确方法应该是什么?
  2. 在我的test_cancel()函数中,编写self.close()是关闭应用程序的最佳方法吗?我运行程序的方式如下: dialog = testDialog();dialog.show()
  3. 最后,是否可以在我创建的3个按钮中添加3个不同的工具提示?我看到它有一个命令- self.buttonBox.setToolTip("Buttons for life!"),但这将导致所有3个按钮都有相同的工具提示。我能单独做吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-29 17:12:59

  1. 是的,这是写入信号连接的正确方法(您发现的另一种语法确实是旧的方法)。您可以在QDialogButtonBox的pyqt文档中找到所有信号。不同的小部件和对象有不同的信号。QPushButtonQDialogButtonBox的信号不同。
  2. 是的,close()将关闭对话框。默认情况下,如果没有其他窗口打开,QApplication将退出。但是,如果这是一个模态对话框,则通常希望使用acceptreject命令关闭对话框。这将提醒调用函数对话框是用Ok/Yes/Apply按钮关闭还是用No/Cancel按钮关闭。
  3. 您可以为QDialogButtonBox中的不同按钮设置不同的工具提示。您只需要获得对要设置工具提示的特定按钮的引用。

例如

代码语言:javascript
运行
复制
self.buttonBox.button(QDialogButtonBox.Help).setToolTip('Help Tooltip')
self.buttonBox.button(QDialogButtonBox.Ok).setToolTip('Apply Tooltip')

或者你可以循环浏览所有的按钮

代码语言:javascript
运行
复制
for button in self.buttonBox.buttons():
    if button.text() == 'Help':
        button.setToolTip('Help Tooltip')
    elif button.text() == 'Apply':
        button.setToolTip('Apply Tooltip')

此外,您还可以将acceptedrejected信号从QDialogButtonBox连接到QDialog上的acceptreject插槽。

代码语言:javascript
运行
复制
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)

这样,您就不必手动将OkCancel按钮连接到回调以关闭对话框。

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

https://stackoverflow.com/questions/39759600

复制
相关文章

相似问题

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