출처 : 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 |