Форум сайта python.su
0
Здравствуйте, не могу разобраться.
По нажатию на adderAction(скачать) я вызываю диалоговое окно, после нажатия
ок или отмена в диалоговом окне скрипт завершается.
Как заставить скрипт работать после нажатия ок\отмена в диалоговом окне?
import sys from PyQt4 import QtGui,QtCore class SystemTrayIcon(QtGui.QSystemTrayIcon): def __init__(self, icon, parent=None): QtGui.QSystemTrayIcon.__init__(self, icon, parent) menu = QtGui.QMenu(parent) adderAction = menu.addAction("Диалоговое окно") exitAction = menu.addAction("Выход") self.setContextMenu(menu) parent.connect(exitAction, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()')) parent.connect(adderAction, QtCore.SIGNAL('triggered()'), lambda: self.make_message(parent)) def make_message(self,parent): link, ok = QtGui.QInputDialog.getText(parent, 'Заголовок', 'Введите текст:') def main(): app = QtGui.QApplication(sys.argv) w = QtGui.QMainWindow() trayIcon = SystemTrayIcon(QtGui.QIcon("icon.png"), w) trayIcon.show() sys.exit(app.exec_()) if __name__ == '__main__': main()
Офлайн
0
Нагугленный пример после открытия окна и нажатия ок пишет:
Ошибка сегментирования (core dumped)
import sys from PyQt4 import QtCore from PyQt4 import QtGui class SystemTrayIcon(QtGui.QSystemTrayIcon): def __init__(self, parent=None): QtGui.QSystemTrayIcon.__init__(self, parent) self.setIcon(QtGui.QIcon("icon.png")) self.iconMenu = QtGui.QMenu(parent) appabout = self.iconMenu.addAction("About") appexit = self.iconMenu.addAction("Exit") self.setContextMenu(self.iconMenu) self.connect(appabout,QtCore.SIGNAL('triggered()'),self.showAbout) self.connect(appexit,QtCore.SIGNAL('triggered()'),self.appExit) self.show() def showAbout(self): QtGui.QMessageBox.information(QtGui.QWidget(), self.tr("About Tunarium"), self.tr("Your text here.")) def appExit(self): sys.exit() if __name__ == "__main__": app = QtGui.QApplication(sys.argv) trayIcon = SystemTrayIcon() trayIcon.show() sys.exit(app.exec_())
Офлайн
0
Ничего не решил с диалоговым окном, использую kdialog.Спасибо.
Офлайн
186
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from PySide import QtCore from PySide import QtGui class SystemTrayIcon(QtGui.QDialog): def __init__(self, *arg, **args): QtGui.QDialog.__init__(self) self.trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("icon.png")) iconMenu = QtGui.QMenu(self) appabout = QtGui.QAction(u"Диалог", self) self.connect(appabout, QtCore.SIGNAL('triggered()'), self.showAbout) appexit = QtGui.QAction(u"Выход", self) self.connect(appexit, QtCore.SIGNAL('triggered()'), sys.exit) iconMenu.addActions([appabout, appexit]) self.trayIcon.setContextMenu(iconMenu) self.trayIcon.show() self.setVisible(False) def showAbout(self): QtGui.QMessageBox.information(self, "About Tunarium", "Your text here.") if __name__ == "__main__": app = QtGui.QApplication(sys.argv) app.setQuitOnLastWindowClosed(False) trayIcon = SystemTrayIcon() sys.exit(app.exec_())
Офлайн
0
Rodegast, спасибо, работает.
Сам догадался сделать только так:
import sys from PyQt4 import QtGui,QtCore class SystemTrayIcon(QtGui.QSystemTrayIcon): def __init__(self, icon, parent=None): QtGui.QSystemTrayIcon.__init__(self, icon, parent) menu = QtGui.QMenu(parent) adderAction = menu.addAction("Диалоговое окно") exitAction = menu.addAction("Выход") self.setContextMenu(menu) parent.connect(exitAction, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()')) parent.connect(adderAction, QtCore.SIGNAL('triggered()'), lambda: self.make_message(parent)) def make_message(self,parent): os.system('kdialog --title "Данные" --inputbox "Введите данные:" >> data.txt ') def main(): app = QtGui.QApplication(sys.argv) w = QtGui.QMainWindow() trayIcon = SystemTrayIcon(QtGui.QIcon("icon.png"), w) trayIcon.show() sys.exit(app.exec_()) if __name__ == '__main__': main()
Офлайн