J'apprends Qt et comment créer des interfaces graphiques avec python. J'ai réussi à créer mes propres fichiers Qt et le remplir avec des boutons et autres choses simples, mais maintenant j'ai trouvé this amazing attitude indicatory compris le widget externe dans mon interface graphique Qt [python]
Ce fichier ai.py contient un widget d'attitude que je voudrais importer dans ma propre interface graphique. Donc, j'ai conçu mon fichier .ui avec un widget de vide nommé « viz_widget », puis je l'ai écrit ce fichier python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui, uic
from ai import AttitudeIndicator
qtCreatorFile1 = "mainwindow.ui" # Enter file here.
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile1)
class OperatorGUI(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(OperatorGUI, self).__init__(parent)
QtGui.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.viz_widget = AttitudeIndicator()
self.viz_widget.setPitch(10)
self.viz_widget.setRoll(20)
self.viz_widget.setHover(500/10.)
self.viz_widget.setBaro(500/10.)
self.viz_widget.update()
# Key press functions
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Q: #Q: close the window
print "pressed Q: exit by keyboard"
self.close()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = OperatorGUI()
window.show()
sys.exit(app.exec_())
L'interface graphique est lancée, il n'y a pas d'erreurs, mais je ne peux pas afficher le widget d'attitude dans mon interface graphique. Est-il possible d'importer le widget? Quelle est mon erreur?
Nous vous remercions à l'avance
EDIT: ce fichier est le maiwindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QWidget" name="viz_widget" native="true">
<property name="geometry">
<rect>
<x>50</x>
<y>40</y>
<width>671</width>
<height>441</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
Vous avez probablement juste besoin d'ajouter le widget à la disposition de la fenêtre - ou plutôt, à la disposition de son widget central. – ekhumoro
@ekhumoro J'ai ajouté un widget dans ma fenêtre (ui.file) nommé viz_widget dans QtCreator. Ensuite, je l'ai connecté à l'objet AttitudeIndicator dans la ligne 'self.viz_widget = AttitudeIndicator()'. Dois-je faire quelque chose de plus ou quelque chose de différent? – marcoresk
Premièrement: débarrassez-vous de ces deux appels '__init__' - ils ne sont pas nécessaires si vous utilisez' super'. Deuxièmement, supprimez le widget que vous avez ajouté dans QtCreator, vous n'avez donc qu'une fenêtre principale vide (et enregistrez les modifications). Puis ajoutez cette ligne à la fin de '__init__':' layout = QtGui.QVBoxLayout (self.centralWidget()) '. Enfin, ajoutez le widget à la mise en page: 'layout.addWidget (self.viz_widget)'. – ekhumoro