Łą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?

Author: Chris, 2010-03-08

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.

 62
Author: Maxim Popravko,
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_())
 49
Author: metakermit,
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.

 29
Author: luc,
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.

  1. Uruchom Qt Designer z menu start.
  2. z okna" nowy formularz "Utwórz" okno główne "
  3. od "Pokaż widżety" na dole "menu pola widżetów" po lewej stronie
    dodaj "widżet etykiety". (Kliknij przeciągnij i Drop)
  4. Kliknij dwukrotnie na nowo dodany widżet etykiety, aby zmienić jego nazwę na "Hello World"
  5. w tym momencie możesz użyć skrótu Control + R, aby zobaczyć, jak będzie wyglądał.
  6. Dodaj przyciski lub tekst lub inne widżety przeciągając i upuszczając, jeśli chcesz.
  7. 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!

  1. z menu start otwórz okno poleceń.
  2. 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.
  3. gdy dotrzesz do katalogu, w którym przechowywany jest Twój plik, wpisz poniżej.
  4. pyuic4-x helloworld.ui-o helloworld.py
  5. Gratulacje!! Masz teraz aplikację python Qt4 GUI!!
  6. 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.

 25
Author: xopenex,
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_())
 16
Author: Akshay,
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.

 12
Author: stelios,
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ć.

 9
Author: Jeba,
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
 5
Author: reviloera,
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.

 4
Author: filipemr,
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

 2
Author: Aju George,
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
 1
Author: Achraf JEDAY,
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.

 0
Author: Pifpy,
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