출처 : https://stackoverflow.com/questions/55241644/pyqt5-to-pyside2-loading-ui-files-in-different-classes

 

PyQt5 to PySide2, loading UI-Files in different classes

I have a python application which runs under python3.6 and is using PyQt5 for loading Ui windows. These windows were created with Qt Designer 5.9.4. The Code below shows a working example with PyQt...

stackoverflow.com

1. Create convert_pyqt5_to_pyside2.py

import os
import fileinput
import argparse
import shutil

def modify_source_code(directory, text_to_search, replacement_text):
    for path, subdirs, files in os.walk(directory):
        for name in files:
            filename = os.path.join(path, name)
            with fileinput.FileInput(filename, inplace=True) as file:
                for line in file:
                    if line.startswith('#'):
                        # not change on comments
                        print(line, end='')
                    else:
                        print(line.replace(text_to_search, replacement_text), end='')

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-i", "--input", help="Input directory")
    parser.add_argument("-o", "--output", help="Output directory")
    args = parser.parse_args()
    if args.input and args.output:
        input_dir = os.path.join(os.path.abspath(args.input), "pyuic", "uic")
        output_dir = os.path.abspath(args.output)
        shutil.copytree(input_dir, output_dir)
        modify_source_code(output_dir, 'PyQt5', 'PySide2')

if __name__ == '__main__':
    main()

 

2. Convert

fakeuic file : https://github.com/eyllanesc/stackoverflow/tree/master/questions/55241644

python convert_pyqt5_to_pyside2.py -i /path/of/PyQt5-folder -o fakeuic

 

3. loadUiType 사용 확인(from fakeuic)

from fakeuic import loadUiType  
from PySide2 import QtCore, QtGui, QtWidgets

Ui_FirstWindow, QFirstWindow = loadUiType('first_window.ui')
Ui_SecondWindow, QSecondWindow = loadUiType('second_window.ui')

class First(QFirstWindow, Ui_FirstWindow):
    def __init__(self):  
        super(First, self).__init__()
        self.setupUi(self)
        self.button.clicked.connect(self.show_second_window)

    def show_second_window(self):
        self.Second = Second()
        self.Second.show()

class Second(QSecondWindow, Ui_SecondWindow):
    def __init__(self):  
        super(Second, self).__init__()
        self.setupUi(self)

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    main = First()
    main.show()
    sys.exit(app.exec_())
반응형

'Programming > Python' 카테고리의 다른 글

Python : DataFrame 이해  (0) 2020.02.22
[Python] pip error (ModuleNotFoundError: No module named 'pip')  (0) 2020.02.19
PyQt vs PySide2 ui file 사용  (0) 2020.02.18
Portable python 에 PyQt5 설치  (0) 2020.02.17
[Python] 함수의 이해  (0) 2019.08.11

+ Recent posts