अजगर / pyqt के लिए एक qtDesigner .ui फ़ाइल को लिंक करना?


81

इसलिए अगर मैं QtDesigner में जाता हूं और UI का निर्माण करता हूं, तो इसे एक .ui फ़ाइल के रूप में सहेजा जाएगा। मैं इसे अजगर फ़ाइल के रूप में कैसे बना सकता हूं या अजगर में इसका उपयोग कैसे कर सकता हूं?


1
मैंने सिर्फ हासिल करने के लिए PySide QUiLoader का उपयोग किया है - देखें पोस्ट [4442286] [1] [1]: stackoverflow.com/questions/4442286
स्वेन

निम्नलिखित विधि और भी अधिक व्यावहारिक है: stackoverflow.com/questions/14892713/…
ized

जवाबों:


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
क्या आप किसी वैरिएबल को एक्सेस करने के बाद जोड़ सकते हैं? जैसे कि पुशबटन?
जोनाथन

3
@JonathanLeaders अगर .ui फ़ाइल में कोई बटन परिभाषित है, तो आप इसे इस तरह कहते हैं: self.pushButton। आप ui को किसी भी वर्ग विशेषता को भी लोड कर सकते हैं जो आप चाहते हैं: uic.loadUi ('uifile.ui', self.ui) और कॉल विजेट्स और self.ui.pushButton जैसे सामान।
मैक्सिम पोपरावको

49

संयोजन मैक्स के जवाब और Shriramana शर्मा की मेलिंग सूची के बाद , मैं एक लोड करने के लिए एक छोटा सा काम कर उदाहरण बनाया mywindow.uiयुक्त फ़ाइल एक QMainWindow(तो बस क्यूटी डिजाइनर के दशक में एक मुख्य विंडो बनाने का निर्णय ले 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
यह सबसे अच्छा उत्तर होना चाहिए, क्योंकि यह एक पूर्ण उदाहरण है।
फ्रांसेस्को पासा

29

आपको अपनी ui फ़ाइल से pyic टूल (साइट-पैकेज \ pyqt4/ बिन) के साथ एक अजगर फ़ाइल बनाने की आवश्यकता है

pyuic form1.ui > form1.py

pyqt4 के साथ

pyuic4.bat form1.ui > form1.py

फिर आप फॉर्म 1 को अपनी स्क्रिप्ट में आयात कर सकते हैं।


25

मुझे यह लेख बहुत मददगार लगा।

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

मैं संक्षेप में उस लेख से ली गई .py फ़ाइल को .ui फ़ाइल बनाने और बदलने की क्रियाओं का संक्षेप में वर्णन करूँगा।

  1. अपने प्रारंभ मेनू से Qt डिज़ाइनर प्रारंभ करें।
  2. "नया रूप" विंडो से, "मुख्य विंडो" बनाएं
  3. बाएं हाथ की तरफ अपने "विजेट बॉक्स मेनू" के निचले भाग की ओर "प्रदर्शन विजेट" से
    "लेबल विजेट" जोड़ें। (ड्रैग एंड ड्रॉप पर क्लिक करें)
  4. "हैलो वर्ल्ड" का नाम बदलने के लिए नए जोड़े गए लेबल विजेट पर डबल क्लिक करें
  5. इस बिंदु पर आप कंट्रोल + आर हॉटकी का उपयोग कर सकते हैं कि यह कैसे दिखेगा।
  6. यदि आप चाहें तो बटन या पाठ या अन्य विजेट जोड़ें और ड्रॉप करें।
  7. अब आप अपने प्रपत्र को बचाने .. फ़ाइल> जैसे- सहेजें> "नमस्ते World.ui" (नियंत्रण + एस भी लाएगा
    "सहेजें के रूप में" विकल्प) निर्देशिका है जहाँ आप अपने "नमस्ते दुनिया" .ui बचाया का ध्यान रखें
    फ़ाइल । (मैंने सुविधा के लिए (सी :) में अपना बचाव किया)

फ़ाइल बनाई और बचाई गई है, अब हम प्यूयिक का उपयोग करके इसमें से पायथन कोड उत्पन्न करेंगे!

  1. अपने प्रारंभ मेनू से एक कमांड विंडो खोलें।
  2. अब निर्देशिका में "cd" जहां आपने अपने "Hello World.ui" को सहेजा है, मेरे लिए मेरे पास सिर्फ "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। एक वास्तव में pxic4 के लिए -x और -o तर्क पास करना होगा। सूचना के लिए धन्यवाद!।
मुअम्मर

महान व्याख्या, विशेष रूप से कि "जीयूआई की पीढ़ी" -code वास्तव में उत्पन्न फ़ाइल में मेरी मदद की है, चीयर्स!
वालमंड जूल 18'20

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

मेरी राय में क्लीनर रास्ता पहले निर्यात करने के लिए। Aforementioned के रूप में है:

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

यह तरीका अन्य लोगों को क्षमता देता है जो कोड को पढ़ने के लिए क्यूटी-डिजाइनर का उपयोग नहीं करते हैं, और आपके कार्यक्षमता कोड को भी बाहर रखता है foo.pyजिसे डिजाइनर द्वारा अधिलेखित किया जा सकता है। आप बस कक्षा के uiमाध्यम से संदर्भित करते हैं MyWindowजैसा कि ऊपर देखा गया है।


self.ui.okButton.clicked.connect(self.function_name)मुझे देता है TypeError: event() takes 1 positional argument but 2 were given। आपने इसे कैसे ठीक किया?
अहसानुल हक़

9

आप अपनी .ui फ़ाइलों को नीचे दिए गए कमांड का उपयोग करके एक निष्पादन योग्य अजगर फ़ाइल में बदल सकते हैं।

pyuic4 -x form1.ui > form1.py

अब आप सीधे अजगर फ़ाइल को निष्पादित कर सकते हैं

python3(whatever version) form1.py

आप इस फ़ाइल को आयात कर सकते हैं और आप इसका उपयोग कर सकते हैं।


FYI करें यदि आप -x विकल्प को छोड़ देते हैं तो आपको उस कोड का भाग नहीं मिलेगा जो एप्लिकेशन बनाता और चलाता है। मैंने कुछ जवाब देखे हैं जो "-x" को छोड़ देते हैं। यह उत्तर सबसे पूर्ण है।
मशीन नहीं

5

आप इस तरह ui फ़ाइलों को संकलित कर सकते हैं

pyuic4 -x helloworld.ui -o helloworld.py


2

pyqt5 में ui फ़ाइल से .py फ़ाइल में परिवर्तित करने के लिए

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


0

एनाकोंडा 3 (सितंबर 2018) और क्यूटी डिजाइनर का उपयोग 5.9.5। क्यूटी डिजाइनर में, अपनी फ़ाइल को यूआई के रूप में सहेजें। एनाकोंडा प्रॉम्प्ट खोलें। अपनी फ़ाइल खोजें: cd C: .... (अपनी फ़ाइल के एक्सेस पथ को कॉपी / पेस्ट करें)। फिर लिखें: pyuic5 -x helloworld.ui -o helloworld.py (helloworld = आपकी फ़ाइल का नाम)। दर्ज। स्पाइडर लॉन्च करें। अपनी फ़ाइल खोलें .py


0

( नवंबर 2020 ) इसने मेरे लिए काम किया ( UBUNTU 20.04 ):

pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.