Łączenie qtdesignera.plik ui do Pythona / pyqt?
Więc jeśli wejdę do Qtdesignera i zbuduję interfejs użytkownika, zostanie on zapisany jako .plik ui. Jak mogę zrobić to jako plik Pythona lub użyć tego w Pythonie?
12 answers
Inny sposób użycia .ui w Twoim kodzie to:
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 itp., musisz je również skompilować:
pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc
Uwaga, Gdy uic
kompiluje interfejs, dodaje "Importuj images_rc" na końcu pliku. py, więc musisz skompilować zasoby do pliku o tej nazwie lub zmienić jego nazwę w wygenerowanym kodzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-03 15:11:55
Łącząc odpowiedźMaxa ishriramany Sharmy z listy dyskusyjnej post , zbudowałem mały roboczy przykład ładowania pliku mywindow.ui
zawierającego QMainWindow
(więc po prostu wybierz, aby utworzyć główne okno w oknie File-New
projektanta Qt).
To jest 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_())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:02
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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-08 06:19:05
Uważam ten artykuł za bardzo pomocny.
Http://talk.maemo.org/archive/index.php/t-43663.html
Opiszę krótko działania do tworzenia i zmiany .plik ui do pliku. py, zaczerpnięty z tego artykułu.
- Uruchom Qt Designer z menu start.
- z okna" nowy formularz "Utwórz" okno główne "
- od "Pokaż widżety" na dole "menu pola widżetów" po lewej stronie
dodaj "widżet etykiety". (Kliknij przeciągnij i Drop) - Kliknij dwukrotnie na nowo dodany widżet etykiety, aby zmienić jego nazwę na "Hello World"
- w tym momencie możesz użyć skrótu Control + R, aby zobaczyć, jak będzie wyglądał.
- Dodaj przyciski lub tekst lub inne widżety przeciągając i upuszczając, jeśli chcesz.
- Teraz zapisz swoją formę.. File - > Save As - > " Hello World.ui " (Control + s wyświetli również
opcja "Zapisz jako") Zachowaj notatkę katalogu, w którym zapisałeś swój "Hello World".ui
plik. (Swój zapisałem w (C:) dla wygoda)
Plik jest tworzony i zapisywany, teraz wygenerujemy z niego kod Pythona za pomocą pyuic!
- z menu start otwórz okno poleceń.
- Teraz " cd "do katalogu, w którym zapisałeś swój" Hello World.ui" dla mnie po prostu musiałem "cd\" i był na moim "C:>" prompt, gdzie mój " Hello World.ui " został zapisany do.
- gdy dotrzesz do katalogu, w którym przechowywany jest Twój plik, wpisz poniżej.
- pyuic4-x helloworld.ui-o helloworld.py Gratulacje!! Masz teraz aplikację python Qt4 GUI!!
- Kliknij dwukrotnie swój helloworld.py plik do uruchomienia. ( Używam pyscripter i po podwójnym kliknięciu
otwiera się w pyscripter, następnie "uruchom" plik stamtąd)
Mam nadzieję, że to komuś pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-02 01:37:59
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_())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-08 03:18:26
Moim zdaniem czystszym sposobem jest najpierw eksport do .py jak wyżej:
pyuic4 foo.ui > foo.py
A następnie użyj go w swoim kodzie (np. main.py
), np.:
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()
Ten sposób daje możliwość innym osobom, które nie używają Qt-designer do odczytu kodu, a także utrzymuje kod funkcjonalności poza foo.py
, który może być nadpisany przez designera. Po prostu odwołujesz się ui
do klasy MyWindow
, Jak widać powyżej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-19 12:17:35
Możesz przekonwertować swoje .pliki ui do pliku wykonywalnego 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żyć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-08 14:06:50
Możesz skompilować pliki ui w następujący sposób
pyuic4 -x helloworld.ui -o helloworld.py
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-03 10:22:35
W celu skompilowania .pliki ui do plików. py, zrobiłem:
python pyuic.py form1.ui > form1.py
Att.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-25 11:44:56
W pyqt5 do konwersji z pliku interfejsu użytkownika do pliku. py
pyuic5.exe youruifile.ui -o outputpyfile.py -x
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-09 22:31:48
(listopad 2020 ) to działało dla mnie ( UBUNTU 20.04):
pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-09 05:56:22
Za pomocą Anaconda3 (wrzesień 2018) i Qt designer 5.9.5. W Qt designer zapisz plik jako interfejs użytkownika. Otwórz znak zachęty Anakondy. Szukaj w pliku: cd C:.... (skopiuj / wklej ścieżkę dostępu do pliku). Następnie napisz: pyuic5-x helloworld.ui-o helloworld.py (helloworld = nazwa pliku). Wejść. Odpalamy Spydera. Otwórz plik. PY.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-12 22:08:08