pyside qdialog box或qaction图标正在关闭app

时间:2016-05-17 14:48:39

标签: python-3.x pyside

问题是在工具栏(或qpushbutton)中的操作上设置图标并在触发时显示qmessagebox。如果我删除图标,则会显示消息框。如果我删除了消息框但保留了图标,则应用程序保持打开状态。另一个奇怪的事情是,如果我将图标添加到按钮而不是操作,并单击该操作,它仍会关闭应用程序。奇怪的是,如果我在qapplication.exec_()之前添加main.qpush_button_clicked,则会显示消息框。但是,下次我点击其中任何一个时,它会关闭应用程序。

我查看过多个帖子,其中一些想法是使用setQuitOnLastWindowClosed,但这并没有解决问题。我还实施了一个活动,看看发生了什么。当我点击任一项时,它会触发ChildAdded事件,然后关闭。

此外,这仅在我在Mac上使用cx_Freeze时不起作用。我还没试过过Win。当使用Eclipse或CLI运行时,它可以正常工作。

是否有人对可能导致此问题的原因有任何想法,或者除了不使用图标之外如何修复它。

我使用的图标来自Android图标包。

如果需要,我可以添加崩溃日志。

class Main(QMainWindow):


def __init__(self):
    QMainWindow.__init__(self)

    self.qicon = QIcon('../ic_add_black_24dp_1x.png')

    self.tool_bar = self.addToolBar('main')

    qaction = QAction(self)
    self.tool_bar.addAction(qaction)
    qaction.setText('add')
    qaction.setIcon(self.qicon)
    qaction.triggered.connect(self.qpush_button_clicked)

    qpush_button = QPushButton('add')
    self.setCentralWidget(qpush_button)
    qpush_button.setIcon(self.qicon)
    qpush_button.clicked.connect(self.qpush_button_clicked)


def qpush_button_clicked(self, *args, **kwargs):
    QMessageBox.critical(self, 'test', 'testing')



if __name__ == '__main__':
    qapplication = QApplication(sys.argv)

    main = Main()
    main.show()
    main.raise_()

    qapplication.exec_()

这是设置文件

name = 'dialog'
version = '0.1'
description = 'description'

packages = ('os',)
excludes = ('tkinter',)
include_files = ('ic_add_black_24dp_1x.png',)

build_exe = dict(packages=packages,
                 excludes=excludes,
                 include_files=include_files)
options = dict(build_exe=build_exe)

base = 'Win32GUI' if sys.platform == 'win32' else None
script = 'dialog.py'
executables = (Executable(script, base=base),)

setup(name=name,
      version=version,
      description=description,
      options=options,
      executables=executables)
  • PySide版本:1.2.2
  • PySide组件::(1,2,2,' final',0)
  • PySide Compiled Qt:4.8.7
  • PySide Qt组件:(4,8,7)
  • 运行Qt版本:4.8.7

0 个答案:

没有答案