Entonces, si entro en QtDesigner y construyo una interfaz de usuario, se guardará como un archivo .ui. ¿Cómo puedo hacer esto como un archivo de Python o usarlo en Python?
python
user-interface
qt
pyqt
qt-designer
Chris
fuente
fuente
Respuestas:
Otra forma de usar .ui en su código es:
from PyQt4 import QtCore, QtGui, uic class MyWidget(QtGui.QWidget) ... #somewhere in constructor: uic.loadUi('MyWidget.ui', self)
ambos enfoques son buenos. No olvide que si usa archivos de recursos Qt (extremadamente útiles) para iconos, etc., también debe compilarlos:
Tenga en cuenta que cuando
uic
compila la interfaz, agrega 'import images_rc' al final del archivo .py, por lo que debe compilar recursos en el archivo con este nombre o cambiarle el nombre en el código generado.fuente
Combinando la respuesta de Max y la publicación de la lista de correo de Shriramana Sharma , construí un pequeño ejemplo de trabajo para cargar un
mywindow.ui
archivo que contiene unQMainWindow
(así que simplemente elija crear una ventana principal en elFile-New
diálogo de Qt Designer ).Este es el código que lo carga:
import sys from PyQt4 import QtGui, uic class MyWindow(QtGui.QMainWindow): def __init__(self): super(MyWindow, self).__init__() uic.loadUi('mywindow.ui', self) self.show() if __name__ == '__main__': app = QtGui.QApplication(sys.argv) window = MyWindow() sys.exit(app.exec_())
fuente
Necesita generar un archivo python desde su archivo ui con la herramienta pyuic (site-packages \ pyqt4 \ bin)
pyuic form1.ui > form1.py
con pyqt4
pyuic4.bat form1.ui > form1.py
Luego puede importar el formulario1 en su secuencia de comandos.
fuente
Encontré este artículo muy útil.
http://talk.maemo.org/archive/index.php/t-43663.html
Describiré brevemente las acciones para crear y cambiar un archivo .ui a un archivo .py, extraídas de ese artículo.
agregue un "Widget de etiqueta". (Haga clic en Arrastrar y soltar)
la opción "Guardar como") Anote el directorio donde guardó su
archivo .ui "Hello World" . (Guardé el mío en (C :) por conveniencia)
El archivo se crea y guarda, ahora generaremos el código Python a partir de él usando pyuic.
se abre en pyscripter, luego "ejecuto" el archivo desde allí)
Espero que esto ayude a alguien.
fuente
También puede usar
uic
en PyQt5 con el siguiente código.from PyQt5 import uic, QtWidgets import sys class Ui(QtWidgets.QDialog): def __init__(self): super(Ui, self).__init__() uic.loadUi('SomeUi.ui', self) self.show() if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) window = Ui() sys.exit(app.exec_())
fuente
En mi opinión, la forma más limpia es exportar primero a .py como se mencionó anteriormente:
pyuic4 foo.ui > foo.py
Y luego úselo dentro de su código (por ejemplo
main.py
), como:from foo import Ui_MyWindow class MyWindow(QtGui.QDialog): def __init__(self): super(MyWindow, self).__init__() self.ui = Ui_MyWindow() self.ui.setupUi(self) # go on setting up your handlers like: # self.ui.okButton.clicked.connect(function_name) # etc... def main(): app = QtGui.QApplication(sys.argv) w = MyWindow() w.show() sys.exit(app.exec_()) if __name__ == "__main__": main()
De esta forma, otras personas que no usan qt-designer pueden leer el código, y también mantienen su código de funcionalidad fuera de lo
foo.py
que podría ser sobrescrito por el diseñador. Solo hace referencia aui
través de laMyWindow
clase como se ve arriba.fuente
self.ui.okButton.clicked.connect(self.function_name)
me daTypeError: event() takes 1 positional argument but 2 were given
. ¿Cómo lo resolviste?Puede convertir sus archivos .ui en un archivo Python ejecutable usando el siguiente comando.
pyuic4 -x form1.ui > form1.py
Ahora puede ejecutar inmediatamente el archivo Python como
python3(whatever version) form1.py
Puedes importar este archivo y puedes usarlo.
fuente
puedes compilar los archivos de interfaz de usuario como este
pyuic4 -x helloworld.ui -o helloworld.py
fuente
Para compilar archivos .ui en archivos .py, hice:
python pyuic.py form1.ui > form1.py
Att.
fuente
en pyqt5 para convertir de un archivo ui a un archivo .py
pyuic5.exe youruifile.ui -o outputpyfile.py -x
fuente
Usando Anaconda3 (septiembre de 2018) y QT Designer 5.9.5. En QT Designer, guarde su archivo como ui. Abra el indicador Anaconda. Busque su archivo: cd C: .... (copie / pegue la ruta de acceso de su archivo). Luego escriba: pyuic5 -x helloworld.ui -o helloworld.py (helloworld = nombre de su archivo). Entrar. Inicie Spyder. Abra su archivo .py.
fuente
( Noviembre de 2020 ) Esto funcionó para mí ( UBUNTU 20.04 ):
pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py
fuente