Więc jeśli przejdę do QtDesigner i zbuduję interfejs użytkownika, zostanie on zapisany jako plik .ui. Jak mogę to zrobić jako plik Pythona lub użyć tego w Pythonie?
python
user-interface
qt
pyqt
qt-designer
Chris
źródło
źródło
Odpowiedzi:
Innym sposobem użycia .ui w kodzie jest:
from PyQt4 import QtCore, QtGui, uic class MyWidget(QtGui.QWidget) ... #somewhere in constructor: uic.loadUi('MyWidget.ui', self)
oba podejścia są dobre. Nie zapominaj, że jeśli używasz plików zasobów Qt (niezwykle przydatnych) dla ikon i tak dalej, musisz je również skompilować:
pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc
Zauważ, że podczas
uic
kompilacji interfejsu dodaje „import images_rc” na końcu pliku .py, więc musisz wkompilować zasoby do pliku o tej nazwie lub zmienić jego nazwę w wygenerowanym kodzie.źródło
Łącząc odpowiedź Maxa i post na liście mailingowej Shriramany Sharmy , stworzyłem mały działający przykład ładowania
mywindow.ui
pliku zawierającegoQMainWindow
(więc po prostu wybierz opcję stworzenia głównego okna wFile-New
oknie dialogowym Qt Designera ).Oto kod, który go ładuje:
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_())
źródło
Musisz wygenerować plik Pythona z pliku interfejsu użytkownika za pomocą narzędzia pyuic (site-packages \ pyqt4 \ bin)
pyuic form1.ui > form1.py
z pyqt4
pyuic4.bat form1.ui > form1.py
Następnie możesz zaimportować form1 do swojego skryptu.
źródło
Uważam, że ten artykuł jest bardzo pomocny.
http://talk.maemo.org/archive/index.php/t-43663.html
Krótko opiszę działania, aby utworzyć i zmienić plik .ui na plik .py, zaczerpnięte z tego artykułu.
dodaj „Widżet z etykietą”. (Kliknij Przeciągnij i upuść)
opcję „Zapisz jako”). Zapisz katalog, w którym zapisałeś swój
plik „Hello World” .ui . (Dla wygody zapisałem swoje w (C :))
Plik jest tworzony i zapisywany, teraz wygenerujemy z niego kod Pythona za pomocą pyuic!
otwiera się w pyscripter, a następnie „uruchamiam” plik z tego miejsca)
Mam nadzieję, że to komuś pomoże.
źródło
Możesz również użyć
uic
w PyQt5 z następującym kodem.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_())
źródło
Moim zdaniem czystszym sposobem jest najpierw eksport do .py, jak wspomniano powyżej:
pyuic4 foo.ui > foo.py
A następnie użyj go w swoim kodzie (np.
main.py
), Na przykład: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()
W ten sposób daje możliwość innym osobom, które nie używają qt-designer do czytania kodu, a także zachowuje kod funkcjonalności na zewnątrz,
foo.py
który mógłby zostać nadpisany przez projektanta. Po prostu odwołujesz sięui
doMyWindow
klasy, jak widać powyżej.źródło
self.ui.okButton.clicked.connect(self.function_name)
daje miTypeError: event() takes 1 positional argument but 2 were given
. Jak to rozwiązałeś?Możesz przekonwertować pliki .ui na wykonywalny plik Pythona za pomocą poniższego polecenia.
pyuic4 -x form1.ui > form1.py
Teraz możesz od razu uruchomić plik Pythona jako
python3(whatever version) form1.py
Możesz zaimportować ten plik i możesz go używać.
źródło
możesz skompilować pliki ui w ten sposób
pyuic4 -x helloworld.ui -o helloworld.py
źródło
Aby skompilować pliki .ui do plików .py, zrobiłem:
python pyuic.py form1.ui > form1.py
Att.
źródło
w pyqt5 do konwersji z pliku ui do pliku .py
pyuic5.exe youruifile.ui -o outputpyfile.py -x
źródło
Korzystanie z Anaconda3 (wrzesień 2018) i projektanta QT 5.9.5. W projektancie QT zapisz plik jako ui. Otwórz monit Anaconda. Wyszukaj swój plik: cd C: .... (skopiuj / wklej ścieżkę dostępu do pliku). Następnie napisz: pyuic5 -x helloworld.ui -o helloworld.py (helloworld = nazwa twojego pliku). Wchodzić. Uruchom Spyder. Otwórz plik .py.
źródło
( Listopad 2020 ) To zadziałało dla mnie ( UBUNTU 20.04 ):
pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py
źródło