qtDesigner .ui 파일을 python / pyqt에 연결 하시겠습니까?


81

따라서 QtDesigner로 이동하여 UI를 빌드하면 .ui 파일로 저장됩니다. 이것을 파이썬 파일로 만들거나 파이썬에서 어떻게 사용할 수 있습니까?


1
저는 PySide QUiLoader를 사용하여이를 달성했습니다. 게시글 [4442286] [1] [1] : stackoverflow.com/questions/4442286
Sven

다음 방법이 훨씬 더 실용적입니다. stackoverflow.com/questions/14892713/…
iled dec

답변:


62

코드에서 .ui를 사용하는 또 다른 방법은 다음과 같습니다.

from PyQt4 import QtCore, QtGui, uic
class MyWidget(QtGui.QWidget)
    ...
    #somewhere in constructor:
    uic.loadUi('MyWidget.ui', self)

두 가지 방법 모두 좋습니다. 아이콘 등에 대해 Qt 리소스 파일 (매우 유용함)을 사용하는 경우에도 컴파일해야합니다.

pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc

uic인터페이스 를 컴파일 할 때 .py 파일 끝에 'import images_rc'를 추가하므로이 이름의 파일로 리소스를 컴파일하거나 생성 된 코드에서 이름을 변경해야합니다.


2
완료 한 후에 변수에 액세스하는 방법을 추가 할 수 있습니까? 푸시 버튼과 같은?
Jonathan

3
@JonathanLeaders .ui 파일에 정의 된 버튼이있는 경우 다음과 같이 호출하면됩니다. self.pushButton. 또한 원하는 클래스 속성 (uic.loadUi ( 'uifile.ui', self.ui))에 ui를로드하고 self.ui.pushButton과 같은 위젯 및 항목을 호출 할 수 있습니다.
Maxim Popravko 2015 년

49

Max의 답변Shriramana Sharma의 메일 링리스트 포스트를 결합하여 , 나는 mywindow.ui파일 을로드하기위한 작은 작업 예제를 만들었습니다 . QMainWindow(그래서 Qt Designer의 메인 창을 생성하도록 선택하십시오.File-New 대화 상자 ).

로드하는 코드는 다음과 같습니다.

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_())

3
완전한 예이기 때문에 이것이 최선의 답이되어야합니다.
Francesco Pasa 2016 년

29

pyuic 도구 (site-packages \ pyqt4 \ bin)를 사용하여 ui 파일에서 Python 파일을 생성해야합니다.

pyuic form1.ui > form1.py

pyqt4 사용

pyuic4.bat form1.ui > form1.py

그런 다음 form1을 스크립트로 가져올 수 있습니다.


25

이 기사가 매우 유용하다는 것을 알았습니다.

http://talk.maemo.org/archive/index.php/t-43663.html

이 기사에서 가져온 .ui 파일을 .py 파일로 만들고 변경하는 작업에 대해 간략하게 설명하겠습니다.

  1. 시작 메뉴에서 Qt Designer를 시작하십시오.
  2. "새 양식"창에서 "메인 창"을 만듭니다.
  3. "디스플레이 위젯"에서 왼쪽의 "위젯 박스 메뉴"하단으로
    "라벨 위젯"을 추가합니다. (드래그 앤 드롭 클릭)
  4. 새로 추가 된 레이블 위젯을 두 번 클릭하여 이름을 "Hello World"로 변경합니다.
  5. 이 시점에서 Control + R 핫키를 사용하여 모양을 볼 수 있습니다.
  6. 원하는 경우 드래그 앤 드롭으로 버튼이나 텍스트 또는 기타 위젯을 추가합니다.
  7. 이제 양식을 저장합니다. 파일-> 다른 이름으로 저장-> "Hello World.ui"(Control + S는
    "다른 이름으로 저장"옵션도 표시 함) "Hello World".ui
    파일 을 저장 한 디렉토리를 기록해 둡니다. . (편의상 (C :)에 저장했습니다)

파일이 생성되고 저장되었으므로 이제 pyuic을 사용하여 Python 코드를 생성합니다!

  1. 시작 메뉴에서 명령 창을 엽니 다.
  2. 이제 "Hello World.ui"를 저장 한 디렉토리에 "cd"를 입력했습니다. 저에게는 "cd \"만 있으면되었고 "C :>"프롬프트에 있었는데, 여기서 "Hello World.ui"가 저장되었습니다.
  3. 파일이 저장된 디렉토리에 도달하면 다음을 입력하십시오.
  4. pyuic4 -x helloworld.ui -o helloworld.py
  5. 축하합니다!! 이제 파이썬 Qt4 GUI 애플리케이션이 생겼습니다 !!
  6. helloworld.py 파일을 두 번 클릭하여 실행하십시오. (나는 pyscripter를 사용하고 두 번 클릭
    하면 pyscripter에서 열리고 거기에서 파일을 "실행"합니다)

이것이 누군가를 돕기를 바랍니다.


1
pyuic4 helloworld.ui> helloworld.py를 사용하여 컴파일했습니다. 실제로 pyuic4에 -x 및 -o 인수를 전달해야합니다. 정보 주셔서 감사합니다!.
무아 마르

특히 "GUI 생성"코드가 실제로 생성 된 파일에 있다는 큰 설명이 도움이되었습니다.
Valmond

16

uic다음 코드를 사용 하여 PyQt5 에서도 사용할 수 있습니다 .

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_())

12

내 생각에 더 깨끗한 방법은 앞서 언급 한대로 .py로 먼저 내보내는 것입니다.

pyuic4 foo.ui > foo.py

그런 다음 다음 main.py과 같이 코드 내에서 사용하십시오 (예 :).

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()

이렇게하면 qt-designer를 사용하지 않는 다른 사람들이 코드를 읽을 foo.py수있는 기능을 제공 하고 디자이너가 덮어 쓸 수있는 기능 코드를 외부 에 보관할 수 있습니다. 위와 같이 클래스를 ui통해 참조 합니다 MyWindow.


self.ui.okButton.clicked.connect(self.function_name)나에게 준다 TypeError: event() takes 1 positional argument but 2 were given. 어떻게 해결 했나요?
Ahsanul Haque

9

아래 명령을 사용하여 .ui 파일을 실행 가능한 Python 파일로 변환 할 수 있습니다.

pyuic4 -x form1.ui > form1.py

이제 파이썬 파일을 다음과 같이 바로 실행할 수 있습니다.

python3(whatever version) form1.py

이 파일을 가져 와서 사용할 수 있습니다.


참고로 -x 옵션을 생략하면 응용 프로그램을 만들고 실행하는 코드 부분을 얻을 수 없습니다. "-x"를 생략 한 몇 가지 답변을 보았습니다. 이 답변이 가장 완벽합니다.
Not a machine

5

다음과 같이 ui 파일을 컴파일 할 수 있습니다.

pyuic4 -x helloworld.ui -o helloworld.py

4

.ui 파일을 .py 파일로 컴파일하기 위해 다음을 수행했습니다.

python pyuic.py form1.ui > form1.py

Att.


2

pyqt5에서 ui 파일에서 .py 파일로 변환

pyuic5.exe youruifile.ui -o outputpyfile.py -x


0

Anaconda3 (2018 년 9 월) 및 QT 디자이너 5.9.5 사용. QT 디자이너에서 파일을 ui로 저장합니다. Anaconda 프롬프트를 엽니 다. 파일 검색 : cd C : .... (파일의 액세스 경로를 복사 / 붙여 넣기). 그런 다음 pyuic5 -x helloworld.ui -o helloworld.py (helloworld = 파일 이름)를 작성합니다. 시작하다. Spyder를 시작합니다. .py 파일을 엽니 다.


0

( 2020 년 11 월 ) 이것은 나를 위해 일했습니다 ( UBUNTU 20.04 ) :

pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.