Я хотел бы получить доступ и изменить параметры моего MainWindow из другого файла .py, расположенного в той же папке. Вот мой основной файл:
# File name : main.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def button_clicked(self) : # Change the label text
self.label_rate.setText("OK")
def setupUi(self, MainWindow):
MainWindow.setObjectName("Currencies Converter")
MainWindow.setWindowTitle("Currencies Converter")
MainWindow.resize(872, 412)
MainWindow.setMinimumSize(QtCore.QSize(872, 412))
MainWindow.setMaximumSize(QtCore.QSize(872, 412))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
rate_font = QtGui.QFont()
rate_font.setPointSize(50)
self.validation_button = QtWidgets.QPushButton(self.centralwidget)
self.validation_button.clicked.connect(self.button_clicked)
self.validation_button.setText("CONVERT")
self.validation_button.setGeometry(QtCore.QRect(660, 0, 201, 41))
self.validation_button.setObjectName("validation_button")
self.label_rate = QtWidgets.QLabel(self.centralwidget)
self.label_rate.setFont(rate_font)
self.label_rate.setText("3.1214")
self.label_rate.setGeometry(QtCore.QRect(30, 170, 301, 121))
self.label_rate.setAlignment(QtCore.Qt.AlignCenter)
self.label_rate.setObjectName("label_rate")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 872, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
В этом состоянии код работает, но я хотел бы поместить функцию button_clicked()
(и все будущие) в файл .py, расположенный в той же папке. как main.py. Но я столкнулся с некоторыми проблемами с концепциями наследования PyQt5. Я пробовал это:
# File name : func.py
from PyQt5 import QtCore, QtGui, QtWidgets
from main import Ui_MainWindow
class Funcs(Ui_MainWindow) :
def button_clicked(self) :
self.label_rate.setText("OK")
И на main.py:
from PyQt5 import QtCore, QtGui, QtWidgets
from func import Funcs
...
...
...
self.validation_button.clicked.connect(Funcs.button_clicked)
Я пробовал несколько конфигураций, но все равно получаю это сообщение об ошибке:
ImportError: cannot import name 'Funcs' from 'func'