Lorsque les données sous-jacentes du modèle changent, le modèle doit émettre soit layoutChanged, soit layoutAboutToBeChanged, afin que la vue se mette à jour correctement (il y a aussi dataChanged, si vous souhaitez mettre à jour une plage de cellules spécifique). Donc, vous avez juste besoin de qu
Voici les packages Windows wheel construits par Chris Golke - Python Windows Binary packages - PyQt Dans les noms de fichiers cp27 signifie C-python version 2.7, cp35 signifie python 3.5, etc. Étant donné que Qt est un système plus compliqué avec une base de code C++ compilée sous-jacente à linter
Tout dabord :ajoutez un véritable widget à votre exemple : self.widget = QWidget(self) layout = QVBoxLayout(self) layout.addWidget(self.widget) Deuxièmement :rendez-vous service et utilisez des triples guillemets : self.widget.setStyleSheet( QWidget { border: 20
QProcess est très similaire à subprocess , mais cest beaucoup plus pratique à utiliser dans le code (Py)Qt. Parce quil utilise des signaux/slots. De plus, il exécute le processus de manière asynchrone afin que vous nayez pas à utiliser QThread . Jai modifié (et nettoyé) votre code pour QProcess : i
Version mise à jour de la réponse de @Alaaedeen. Vous pouvez spécifier nimporte quelle partie de la version de nimporte quel package que vous souhaitez installer. Cela peut entraîner la modification dautres versions de package. Par exemple, si vous ne vous souciez pas de la version spécifique de PyQ
Si vous avez besoin de reconnecter des signaux à de nombreux endroits, vous pouvez définir une fonction utilitaire générique comme celle-ci : def reconnect(signal, newhandler=None, oldhandler=None): try: if oldhandler is not None: while True: signal.di
Peu importe que la connexion soit établie avant ou après le déplacement de lobjet de travail vers lautre thread. Pour citer les documents Qt : Qt::AutoConnection - Si le signal est émis depuis un autre thread que lobjet récepteur, le signal est mis en file dattente, se comportant comme Qt::QueuedCo
Limplémentation par défaut de run() dans QThread exécute une boucle dévénements pour vous, léquivalent de : class GenericThread(QThread): def run(self, *args): self.exec_() La chose importante à propos dune boucle dévénements est quelle permet aux objets possédés par le thread pour rec
Modifiez votre center méthode comme suit : def center(self): frameGm = self.frameGeometry() screen = QtGui.QApplication.desktop().screenNumber(QtGui.QApplication.desktop().cursor().pos()) centerPoint = QtGui.QApplication.desktop().screenGeometry(screen).center() frameGm.moveCenter(ce
Cela dépend de ce que vous entendez par nécessaire. Une application pourrait potentiellement consomment beaucoup de mémoire si (par exemple) on ne fait pas attention lors de la fermeture des widgets. Les classes basées sur QObject sont conçues pour être (éventuellement) liées ensemble dans une hiér
import sys from PyQt5 import QtWidgets, QtGui, QtCore class Example(QtWidgets.QMainWindow): def __init__(self): super(Example, self).__init__() self.initUI() def mousePressEvent(self, QMouseEvent): print(QMouseEvent.pos()) def mouseReleaseEvent(self, QMouseEvent)
Tout dabord, cest une mauvaise idée déditer directement le code créé avec QtDesigner. Vous avez peut-être vu la ligne # WARNING! All changes made in this file will be lost! en haut du document. Pour un widget aussi simple, il vaut mieux utiliser un codage manuel. Deuxièmement, regardez de plus près
Peut créer un décorateur qui encapsule les nouveaux décorateurs de signal/slot de PyQt et fournit une gestion des exceptions pour tous les slots. Peut également remplacer QApplication::notify pour intercepter les exceptions C++ non interceptées. import sys import traceback import types from functool
Je nai pas travaillé avec, mais la recherche semble indiquer quil faut jouer avec les drapeaux de la fenêtre. QWidget a une méthode appelée setWindowFlags . Voici la doc pour la classe Qt.WindowFlags. Voici une référence pour tous les drapeaux. Recherchez Qt.WindowMaximizeButtonHint En général,
Vous pouvez utiliser pyuic4 commande sur le shell :pyuic4 input.ui -o output.py Pour pyqt5, vous pouvez utiliser pyuic5 xyz.ui > xyz.py ou pyuic5 xyz.ui -o xyz.py Si vous utilisez Windows, le dossier PyQt4 nest pas dans le chemin par défaut, vous devez vous y rendre avant dessayer de lex
Jai trouvé une solution pour vous. Lastuce était : pour écrire le setData méthode du modèle pour toujours retourner un QVariant dans le data méthode Cest ici. (Jai dû créer une classe appelée Dataframe , pour que lexemple fonctionne sans pandas. Veuillez remplacer tous les if has_pandas déclarati
Jutilise principalement la commande suivante sous le cmd pip install pyqt5 Et cela fonctionne sans problème ! Le moyen le plus simple dinstaller PyQt consiste simplement à utiliser le programme dinstallation (lien dans votre réponse, étape 5). Si vous installez Python 3.3, le programme dinstall
Vous devez conserver une référence à la fenêtre ouverte, sinon elle sort de la portée et est ramassée, ce qui détruira également lobjet C++ sous-jacent. Essayez : def Start(): m = myWindow() m.show() return m class myWindow():.... if __name__ == __main__: import sys app = QApp
Les expressions lambda renvoient différent fonctions qui (plus ou moins par hasard;) ) feront la même chose. Par conséquent, ce à quoi vous avez connecté votre signal nest pas la même chose que le deuxième lambda que vous utilisez lorsque vous essayez de le déconnecter ; voir cet exemple : >>&
Le vrai problème ici est que vous bloquez toute linterface graphique pendant 5 secondes en dormant dans le thread principal. Vous ne pouvez pas faire cela, ou aucune mise à jour napparaîtra, lutilisateur ne pourra pas interagir avec votre application, etc. Le problème de journalisation nest quune so