Configuration d'une boîte à outils qui lance différentes applications à partir d'une barre d'état Icône et je dois pouvoir ouvrir la fenêtre de configuration sans la fermer l'ensemble de l'application.Fenêtre contextuelle PyQt de l'icône de la barre d'état qui ne ferme pas le programme lorsque la fenêtre est fermée
import sys
from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu, qApp, QMainWindow, QPushButton, QLabel, QLineEdit
from PyQt5.QtGui import QIcon
from PyQt5 import QtCore
class autoparse():
def __init__(self):
self.main()
def main(self):
app = QApplication(sys.argv)
self.trayIcon = QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app)
self.menu = QMenu()
self.trayIcon.setContextMenu(self.menu)
self.autopconfig = self.menu.addAction('Config')
self.autopconfig.triggered.connect(self.configwindow)
exitaction = self.menu.addAction("Exit")
exitaction.triggered.connect(qApp.quit)
self.trayIcon.show()
sys.exit(app.exec_())
def configwindow(self):
try:
self.config = QMainWindow()
self.config.setWindowTitle('Configuration')
self.config.setGeometry(300, 300, 640, 480)
self.lbl = QLabel('Directory: ', self.config)
self.lbl.setGeometry(QtCore.QRect(10, 20, 200, 20))
self.pathsel = QLineEdit(self.config)
self.pathsel.setMaxLength(250)
self.pathsel.setText('path here')
# self.pathsel.selectAll()
self.pathsel.setGeometry(QtCore.QRect(10, 50, 400, 20))
print(self.pathsel.text())
self.btn = QPushButton('...', self.config)
self.btn.setGeometry(QtCore.QRect(414, 50, 30, 20))
self.btn.clicked.connect(self.fileselect)
self.config.show()
except Exception as E:
print(E)
def fileselect(self):
print('hello')
test1 = autoparse()
Je suppose la fermeture de l'application entière parce que ma fenêtre pop-up est Qmainwindow()
mais la seule autre fenêtre de type pop-up conclusion im sont des fenêtres de dialogue qui sont automatiquement peuplées avec les champs. Peut-être que j'ai besoin de lancer mainwindow lorsque l'icône de la barre d'état se lance, puis masquer() la fenêtre principale? Puis lancer les fenêtres popup avec ça comme parent?
Objectif final: Je souhaite sélectionner des options dans l'icône de la barre d'état système et obtenir les fenêtres correspondant à mes informations configurées. Lorsque quelqu'un clique sur "OK", "enregistrer", "annuler", etc dans l'une de ces fenêtres ou clique sur le X Je ne veux pas qu'il quitte l'application et supprime l'icône de la barre d'état.
Quels sont les "okay", "save", "cancel", je ne les vois pas dans votre application. – eyllanesc
@eyllanesc Je ne les ai pas encore ajouté mais cela soulève une bonne question. Si l'utilisateur clique sur "OK" et que ce bouton exécute une fonction qui enregistre la configuration dans la fenêtre, comment fermer la fenêtre de configuration à la fin de cette fonction? – sidnical
Quel type de fenêtre utiliserez-vous, si vous allez utiliser 'QDialog', je vous recommande d'utiliser la fonction' exec _() 'au lieu d'utiliser show(), cela retournera l'état, et vous pourrez associer les boutons à la tâche de fermer la fenêtre, je recommande de lire sur 'QDialog'. – eyllanesc