Ich habe 2 neue Widgets/Windows in pyqt, von meinem Hauptfenster aus erstellt. Jetzt möchte ich meine Methoden in der Hauptfenster-Klasse auf meine neuen Widgets zugreifen. Wie kann ich das machen?Zugriffsmethoden von einer anderen Klasse PyQt4
Hier ist mein Code:
from UI_NewProject import Ui_widget
from UI_OpenNew import Ui_Form
# Main Class
class MainClass(QtGui.QMainWindow, UI_Main.Ui_MainWindow):
def __init__(self, parent=None):
super(MainClass, self).__init__(parent)
self.setupUi(self)
self.openFile.triggered.connect(self.on_pushButton_clicked)
def on_pushButton_clicked(self):
connectClass = openNew(self)
connectClass.show()
def funcfromMain(self):
filters = ('Data Files (*.csv *.txt *.xls *.xml *.xlsx *.xlsm)',)
path, filter = QtGui.QFileDialog.getOpenFileNameAndFilter(
self, 'Open File', '', ';;'.join(filters))
self.nameFile = os.path.basename(path)
if (".csv" or ".txt") in path:
with open(path, 'rb') as drate:
self.Datas = pd.read_csv(drate, index_col=0)
if (".xls" or ".xml" or ".xlsx" or ".xlsm") in path:
with open(path, 'rb') as drate:
self.Datas = pd.read_excel(drate, index_col=0)
#New Widget/Window class 1
class openNew(QtGui.QMainWindow, Ui_Form):
#from UI_OpenNew import Ui_Form
def __init__(self, parent = None):
super(openNew, self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
# Create New Project
self.pushButton_2.clicked.connect(self.on_Button_clicked)
self.pushButton.clicked.connect(MainClass.funcfromMain) #this is funtion in MainClass and I want to access it Here
def on_Button_clicked(self):
Win = NewProject(self)
Win.show()
#New Widget/Window class 2
class NewProject(QtGui.QMainWindow, Ui_widget):
#from UI_NewProject import Ui_widget
def __init__(self, parent = None):
super(NewProject, self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
self.pushButton_2 and self.pushButton
sind aus den entsprechenden UI-Dateien.
Jetzt möchte ich Schaltflächen wie diese in den neuen UI-Dateien mit Methoden in MainClass verbinden, also irgendwelche Ideen, wie ich das erreichen kann?
Fehler: (mit parent.func
)
TypeError: QFileDialog.getOpenFileNameAndFilter(QWidget parent=None, str caption='', str directory='', str filter='', str initialFilter='', QFileDialog.Options options=0) -> (str, str): argument 1 has unexpected type 'bool'
Update 1: Ich versuchte Mixin-Klasse verwenden, aber meine Hauptdatei ist so groß, und ich möchte wie 6-7 Methoden der wichtigsten in den neuen Widgets so , irgendwelche Ideen, wie ich das angehen kann?
welche Fehler? wir können nicht in deinen Gedanken lesen. Fügen Sie immer eine vollständige Fehlermeldung (Rückverfolgung) hinzu. – furas
haben Sie versucht, "Eltern" zu verwenden - dh. 'parent.funcfromMain' – furas
@eyllanesc, Ja, ich habe die Konzepte durchgelesen, jetzt frage ich mich, ob ich das überhaupt nicht tun kann, ich habe das nur gepostet, in der Hoffnung, irgendwelche Ideen zu bekommen, wie ich das angehen soll! – learncode