Voici un exemple de filtrage dans PyQt en utilisant QSortFilterProxyModel , QStandardItemModel et QTableView , il peut être facilement adapté à dautres vues et modèles : #!/usr/bin/env python #-*- coding:utf-8 -*- from PyQt4 import QtCore, QtGui class myWindow(QtGui.QMainWindow): def __init__(
Utilisez setFixedSize : mydialog.setFixedSize(width, height) Les réponses ci-dessus sont très bien, en plus, vous pouvez définir maximum et mini largeurs et hauteurs manuellement, comme ceci : myDialog = QDialog() myDialog.setMaximumWidth(myDialog.width()) myDialog.setMaximumHeight(myDialog.heigh
Vous devez autoriser le traitement des événements pendant lexécution de la boucle afin que lapplication puisse rester réactive. Plus important encore, pour les tâches de longue durée, vous devez fournir à lutilisateur un moyen darrêter la boucle une fois quelle est lancée. Une façon simple de le
Si le module de threading est disponible, le module de journalisation utilisera threading.current_thread().name pour définir le threadName Attribut LogRecord. Mais les docs pour threading.current_thread dire quun objet thread factice sera utilisé si le thread actuel na pas été créé par le module de
Ce problème est dû à certaines particularités de la gestion des icônes de la barre des tâches sur la plate-forme Windows. Voir cette réponse pour plus de détails, ainsi quune solution de contournement à laide de ctypes . Il me semble que le problème peut être causé par un manque dicône avec la bo
Cela fonctionne : # this will remove minimized status # and restore window with keeping maximized/normal state window.setWindowState(window.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive) # this will activate the window window.activateWindow() Les deux sont nécessaires p
Vous avez quelques questions réunies en une... réponse courte, oui, vous pouvez ajouter un bouton à un QTableWidget - vous pouvez ajouter nimporte quel widget au widget de table en appelant setCellWidget : # initialize a table somehow table = QTableWidget(parent) table.setRowCount(1) table.setColumn
Il existe plusieurs façons de le faire :décorateur de classe, métaclasse, Mixin. Fonction dassistance commune : def set_pyqtproperties(klass, properties, proxy=user): def make_prop(prop): def property_(self): return getattr(getattr(self, proxy), get_ + prop)
btn.clicked.connect(self.close) Ce serait ma suggestion Remplacer lambda: os.system(cmd) avec une fonction/méthode comportant plusieurs instructions. def buttonClicked(self): os.system(cmd) QtCore.QCoreApplication.instance().quit() ... btn = QtGui.QPushButton(Yes, self) btn
Jai pu résoudre ce problème, et cela devrait également aider les autres : Créez le fichier .spec avec la commande suivante : python Makespec.py --noconsole --icon=youricon.ico --name=App name program.py Ouvrez le fichier .spec (ex. :Nom de lapplication/Nom de lapplication.spec) et vous devrie
Le contexte OpenGL nest pas configuré à lintérieur du constructeur, il nest valide et actuel quà lintérieur des méthodes paintGL, resizeGL et initializeGL, vous devez donc charger et compiler les shaders à lintérieur de la méthode initializeGL, et nulle part ailleurs.
Il semble quil y ait deux problèmes différents qui peuvent contribuer à causer cela. Et on dirait que jai rencontré les deux. 1er. Jai lancé le programme dinstallation de PyQt4 en tant quadministrateur, ce qui semble avoir résolu une partie du problème. Il doit donc être exécuté en tant quadministr
comme ceci : from PyQt4 import QtGui app = QtGui.QApplication([]) w = QtGui.QMainWindow() menu = QtGui.QMenu(menu, w) menu.addAction(QtGui.QAction(50%, menu, checkable=True)) menu.addAction(QtGui.QAction(100%, menu, checkable=True)) menu.addAction(QtGui.QAction(200%, menu, checkable=True)) menu.a
A partir du document éléments, telle que renvoyée par PySide.QtGui.QGraphicsScene.itemsBoundingRect() , comme le rectangle de la scène. Il définit donc le rect de votre image comme recto de votre scène et le centre de la scène est le centre du widget. Les barres de défilement apparaîtront lorsque
ajoutez simplement cette ligne à vos fenêtres principales : self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center()) self.move(QDesktopWidget().availableGeometry().center() - self.frameGeometry().center()) Non, cest le moyen le plus simple. Voici un extrait que jai
Remplacer le closeEvent méthode de QWidget dans votre fenêtre principale. Par exemple : class MainWindow(QWidget): # or QMainWindow ... def closeEvent(self, event): # do stuff if can_exit: event.accept() # let the window close else: event.ig
Il existe quelques méthodes du QHeaderView classe qui fera probablement ce que vous voulez. Le plus simple est : table.horizontalHeader().setStretchLastSection(True) Cela garantira que la dernière colonne est automatiquement redimensionnée pour sadapter à lespace disponible dans le tableau, en lai
Fonctionne bien pour moi (Windows 7x64bit, Python 2.7x32bit) ajoutez simplement le répertoire QT à votre chemin système ou ajoutez-le à la ligne de commande avec p choix : PyInstaller -y -F --distpath=. -p C:\Python27\Lib\site-packages\PyQt4 test.py Si vous installez PyQt à partir dun exécutable,
En supposant list1 est une liste de chaînes, vous pouvez simplement les ajouter toutes en même temps à laide de la méthode addItems : self.comboBox_2.clear() self.comboBox_2.addItems(list1) Notez que vous utilisez probablement QApplication.translate dans le mauvais sens dans votre exemple. Si vous
Je pense que QApplication.setOverrideCursor est ce que vous cherchez : PyQt5 : from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication ... QApplication.setOverrideCursor(Qt.WaitCursor) # do lengthy process QApplication.restoreOverrideCursor() PyQt4 : from PyQt4.QtCore import Qt from