designer-qt4上的单选按钮和显示小部件

时间:2014-03-24 11:22:18

标签: python qt pyside

我有一个带有旧的基于文本的用户界面的shell脚本:我想用python替换我的shell代码,并使用qt designer tool和pyside创建一个图形用户界面。

我能够添加一个菜单栏,一个标签和一些单选按钮。

当用户选择单选按钮时,我想在文本框中显示该选择的含义的简要说明;当它选择另一个单选按钮时,应该出现同一文本框上的不同描述,依此类推。

我的问题是:

  1. 我应该使用哪个小部件作为文本框?我在想文字 浏览器作为显示小部件,但我不确定。一个标签 ?文字编辑?
  2. 当我将单选按钮连接到文本浏览器时,我可以看到一些 文本浏览器下的有趣插槽,如insertHtml或 insertPlainText,但是一旦我选择了clicked()上的信号 单选按钮它们消失了,我甚至都找不到它们 再次。
  3. 我还尝试将按钮与Label小部件连接,但我是 无法找到任何类型的setText插槽。阅读文档 我知道setText存在,但我不能在我的代码中使用它。
  4. 感谢您的支持。

2 个答案:

答案 0 :(得分:0)

点击按钮后使用setText:

void myclass::on_mybutton_click()
{
    ui->mylabel->setText("My awesome text");
}
编辑:这个答案是用C ++编写的,但是你可以轻松地将它转换为python。只是为了你有结构。

答案 1 :(得分:0)

Qt有几个不同的内置API,用于向用户显示帮助消息,因此我建议您在尝试推出自己的解决方案之前先考虑这些:

  • 对于描述GUI元素 的简单消息,您可以设置tooltip
  • 对于描述 的GUI元素的稍长的消息,您可以设置status tip。这些最常用于菜单项和工具栏按钮。
  • 对于更长,信息更丰富的消息,您可以使用what's this mode。这些消息可以使用html formatting,还可以包含指向主帮助的链接。

下面的演示脚本使用了所有这些方法,并且还展示了如何处理"这是什么"消息:

from PyQt4 import QtCore, QtGui

class Window(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.statusBar()
        self.toolbar = self.addToolBar('toolbar')
        action = QtGui.QWhatsThis.createAction(self)
        action.setStatusTip('Enter what\'s this mode')
        self.toolbar.addAction(action)
        widget = QtGui.QGroupBox(self)
        layout = QtGui.QVBoxLayout(widget)
        self.setCentralWidget(widget)
        for name in 'one two three four'.split():
            checkbox = QtGui.QCheckBox('Checkbox %s' % name, self)
            checkbox.setToolTip('Tooltip for checkbox %s' % name)
            checkbox.setWhatsThis("""
                <b>What\'s this text</b>:<br><br>
                Checkbox %s<br><br>
                <a href="url-%s">link to main help</a>
                """ % (name, name))
            checkbox.installEventFilter(self)
            layout.addWidget(checkbox)

    def eventFilter(self, source, event):
        if event.type() == QtCore.QEvent.WhatsThisClicked:
            print(event.href())
        return QtGui.QMainWindow.eventFilter(self, source, event)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(500, 300, 250, 200)
    window.show()
    sys.exit(app.exec_())