【问题标题】:Menubar/ System tray app with Qt带有 Qt 的菜单栏/系统托盘应用程序
【发布时间】:2014-05-03 06:28:14
【问题描述】:

我是 Qt (PyQt) 的新手,我正在尝试制作一个应用程序,其功能将从菜单栏/系统托盘执行。这里展示了一个完美的例子:

我找不到关于如何做到这一点的好资源。谁能给点建议。

谢谢。

【问题讨论】:

  • 还没有。我开始通过 qt 设计器学习和做我的大部分工作。寻找资源,它是否提供此功能?我会很高兴的。

标签: python qt pyqt qtgui qmenu


【解决方案1】:

我认为您至少在寻找与 QMenuQMainWindow 合作的菜单部分。

您可以在这里找到一个 C++ 示例:

Menus Example

这里有一个 PyQt4 示例:

Menus and Toolbars in PyQt4

为方便起见,这是内联代码:

import sys
from PyQt4 import QtGui

class Example(QtGui.QMainWindow):

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

        self.initUI()

    def initUI(self):               

        exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)        
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(QtGui.qApp.quit)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menubar')    
        self.show()


def main():

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


if __name__ == '__main__':
    main()

至于 QSystemTrayIcon 部分,你可以这样写:

def main():
    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("Bomb.xpm"), w)
    menu = QtGui.QMenu(parent)
    exitAction = menu.addAction("Foo")
    trayIcon.setContextMenu(menu)

    trayIcon.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

【讨论】:

  • 我早些时候浏览了该链接并尝试过,但我的问题是,它会像 Dropbox 中的一样正确停靠,而不会显示主窗口。我的大部分任务将是后台进程。所以我只需要快捷方式,当机器启动时,它会显示在那里,用户可以使用菜单执行不同的任务。没有主窗口。更像是一个跳转列表或其他东西。我找不到更好的词,即它叫什么。
  • 不知道你在说什么。 :) 您正在展示一个应用程序(至少对我而言),这就是这样做的方式。在 Qt 中没有任何全局快捷方式。它们甚至可能很危险,所以我不确定这是一个好主意。
  • 我想我必须阅读 QMenu 和 Bars。这个问题让我很接近:stackoverflow.com/questions/893984/…
  • 我尝试了代码并且它有效。我需要利用 QSystemTrayIcon api。我想我应该继续回答上面的问题。还有其他更好的主意吗?
  • @KiuFelix:我用稍微不同但更短的方式更新了我的答案,恕我直言,更好的方法:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
相关资源
最近更新 更多