Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 30, 2014 20:47:59

victor_user
Зарегистрирован: 2014-12-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

pyQt4 SystemTrayIcon

Здравствуйте, не могу разобраться.
По нажатию на 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()

Офлайн

#2 Дек. 30, 2014 21:18:45

victor_user
Зарегистрирован: 2014-12-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

pyQt4 SystemTrayIcon

Нагугленный пример после открытия окна и нажатия ок пишет:
Ошибка сегментирования (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_())

Офлайн

#3 Дек. 30, 2014 22:33:39

victor_user
Зарегистрирован: 2014-12-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

pyQt4 SystemTrayIcon

Ничего не решил с диалоговым окном, использую kdialog.Спасибо.

Офлайн

#4 Дек. 30, 2014 22:35:19

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

pyQt4 SystemTrayIcon

#!/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_())



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Дек. 30, 2014 22:52:54

victor_user
Зарегистрирован: 2014-12-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

pyQt4 SystemTrayIcon

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()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version