Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import re
- MODULE_TEMPLATE = """from PyQt5.QtWidgets import QApplication, {base}
- from {ui_module} import Ui_{cls}
- class {cls}({base}):
- def __init__(self, parent=None):
- super({base}, self).__init__(parent)
- self.ui = Ui_{cls}()
- self.ui.setupUi(self)
- if __name__ == '__main__':
- import sys
- app = QApplication(sys.argv)
- w = {cls}()
- w.show()
- sys.exit(app.exec_())
- """
- CLASS_RE = re.compile('<class>([^<]+)')
- # У сгенерированного ui файла у <widget/> есть параметр name, его значение
- # совпадает с <class>CLASS_NAME</class>, но при генерации скрипта pyuic5.exe
- # использует содержимое <class/>
- BASE_RE = re.compile('<widget class="([^"]+)')
- def compile_qt(path='.'):
- """Данная функция рекурсивно проходит по всем каталогам начиная с
- указанного и ищет файлы с расширениями .ui и .qrc, а затем компилирует их
- в python модули. Помимо этого создается модуль для тестирования."""
- for cur_path, dirs, files in os.walk(path):
- full_path = os.path.realpath(cur_path)
- # print("cd", full_path)
- os.chdir(full_path)
- for filename in files:
- # print(os.path.join(cur_path, filename))
- if filename[-3:].lower() == '.ui':
- ui_filename = 'ui_' + filename[:-3] + '.py'
- if os.path.exists(ui_filename):
- continue
- cmd = 'pyuic5 {} -o {}'.format(
- filename, ui_filename)
- # print(cmd)
- os.system(cmd)
- test_filename = filename[:-3] + '.py'
- # Придется удалять ui_foo.py и foo.py
- if os.path.exists(test_filename):
- continue
- # Создаем модуль для теста
- with open(filename, encoding='utf-8') as fp:
- content = fp.read()
- cls = CLASS_RE.search(content).group(1)
- base = BASE_RE.search(content).group(1)
- with open(test_filename, 'w', encoding='utf-8') as fp:
- fp.write(MODULE_TEMPLATE.format(
- cls=cls, base=base, ui_module=ui_filename[:-3]))
- elif filename[-4:].lower() == '.qrc':
- rc_filename = filename[:-4] + '_rc.py'
- if os.path.exists(rc_filename):
- continue
- cmd = 'pyrcc5 {} -o {}'.format(
- filename, rc_filename)
- # print(cmd)
- os.system(cmd)
- if __name__ == '__main__':
- import sys
- sys.exit(compile_qt())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement