Отже, якщо я заходжу в QtDesigner і будую користувальницький інтерфейс, він буде збережений як файл .ui. Як я можу зробити це як файл python або використовувати це в python?
Отже, якщо я заходжу в QtDesigner і будую користувальницький інтерфейс, він буде збережений як файл .ui. Як я можу зробити це як файл python або використовувати це в python?
Відповіді:
Іншим способом використання .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
компіляції інтерфейсу він додає 'import images_rc' в кінці файлу .py, тому вам потрібно скомпілювати ресурси у файл із цим ім'ям або перейменувати його у згенерованому коді.
Поєднуючи відповідь Макса та публікацію списку розсилки Шрірамани Шарми , я створив невеликий робочий приклад завантаження mywindow.ui
файлу, що містить файл QMainWindow
(тому просто виберіть створити головне вікно в File-New
діалоговому вікні Qt Designer ).
Це код, який його завантажує:
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_())
Я знайшов цю статтю дуже корисною.
http://talk.maemo.org/archive/index.php/t-43663.html
Я коротко опишу дії щодо створення та зміни файлу .ui на файл .py, взяті з цієї статті.
Файл створено та збережено, тепер ми створимо з нього код Python за допомогою pyuic!
Сподіваюся, це комусь допомагає.
Ви також можете використовувати 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_())
На мою думку, більш чистий спосіб - це спочатку експортувати до .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
. Як ти це вирішив?
Ви можете перетворити свої файли .ui у виконуваний файл python, використовуючи команду нижче.
pyuic4 -x form1.ui > form1.py
Тепер ви можете негайно виконати файл python як
python3(whatever version) form1.py
Ви можете імпортувати цей файл і можете використовувати його.
в pyqt5 для перетворення з користувацького файлу у файл .py
pyuic5.exe youruifile.ui -o outputpyfile.py -x
Використання Anaconda3 (вересень 2018 р.) Та дизайнер QT 5.9.5. У дизайнері QT збережіть файл як інтерфейс користувача. Відкрийте підказку Anaconda. Шукайте свій файл: cd C: .... (скопіюйте / вставте шлях доступу до вашого файлу). Потім напишіть: pyuic5 -x helloworld.ui -o helloworld.py (helloworld = ім'я вашого файлу). Введіть. Запустіть Spyder. Відкрийте файл .py.
( Листопад 2020 ) Це спрацювало для мене ( UBUNTU 20.04 ):
pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py