如何在pyside中更改窗口标题?

11 投票
1 回答
12695 浏览
提问于 2025-04-18 07:31

我看过关于这个问题的文档,但Qt实在是太复杂了,我可能漏掉了某些关键点。

我创建了一个QMainWindow并用self.setWindowTitle设置了标题。后来在代码中,我想简单地改变这个标题,于是又用了self.setWindowTitle。但是这样做只是在我的应用程序中去掉了标题,而在Ubuntu的面板上却显示了正确的标题。

进一步解释一下在Ubuntu系统上的情况:比如,当我在网页浏览器窗口中编辑这个文本时,标题显示为“如何更改窗口...”,而在电脑屏幕顶部的面板上,我看到的文本是“Firefox网页浏览器”。

我的pyside Qt示例现在在应用程序窗口中去掉了标题,而把它放到了上面的面板上。

我是否需要使用不同的方法来改变标题,而不是setWindowTitle?也许是从centralWidget、MenuBar或其他某个元素来设置?而且标题为什么会在一开始就消失呢?

这是第一次调用setWindowTitle后的Ubuntu截图——标题“PicSel”被设置在应用程序窗口的标题和Ubuntu顶部面板上(或者说这个东西叫什么):

第一次调用setWindowTitle后

这是第二次调用setWindowTitle后的Ubuntu截图——标题没有在应用程序窗口本身上设置,而是在最上面的面板上:

第二次调用setWindowTitle后

1 个回答

6
import sys
from PySide import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):      

        cb = QtGui.QCheckBox('Show title', self)
        cb.move(20, 20)
        cb.toggle()
        cb.stateChanged.connect(self.changeTitle)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('QtGui.QCheckBox')
        self.show()

    def changeTitle(self, state):

        if state == QtCore.Qt.Checked:
            self.setWindowTitle('Checkbox')
        else:
            self.setWindowTitle('')

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

来源: http://zetcode.com/gui/pysidetutorial/widgets/

撰写回答