Как открыть окно QDialog с функцией, передающей аргументы? - PullRequest
0 голосов
/ 30 мая 2018

У меня большие проблемы, я не могу понять, как открыть окно "PlotWindow" с помощью моей функции "OpendPlotWindow".Я новичок в PyQt, так что это глупый вопрос, но я действительно не понимаю, что не так в моем коде

PlotWindow:

class PlotWindoW(QDialog):
    def __init__(self,x,y, parent=None): 
        super(Window, self).__init__(parent)
        self.figure = plt.figure()
        self.canvas = FigureCanvas(self.figure)
        self.toolbar = NavigationToolbar(self.canvas, self)
        self.plot(x,y)
        layout = QVBoxLayout()
        layout.addWidget(self.toolbar)
        layout.addWidget(self.canvas)
        self.setLayout(layout)
        self.show()
    def plot(self,x,y):
        self.figure.clear()
        ax = self.figure.add_subplot(111)
        ax.plot(x,y)
        self.canvas.draw()

PlotSetting:

class PlotSetting(QWidget):
    def __init__(self,fileNameFm,fileNameMesh,fileNameSmry,fileNameXY, parent=None):
        super(QWidget, self).__init__(parent)
        print("setting start")

        donnees.fileFm=fileNameFm
        donnees.fileMesh=fileNameMesh
        donnees.fileSmry=fileNameSmry
        donnees.fileXY=fileNameXY

        self.layout = QVBoxLayout(self)

        self.tabs = QTabWidget()
        self.tab1 = QWidget()   
        self.tabs.sizeHint() 

        self.tabs.addTab(self.tab1,"Setting Mesh")

        LabelFm = QLabel(donnees.fileFm)
        LabelMesh = QLabel(donnees.fileMesh)

        btnNe=QPushButton("Choose Ne", self)
        btnNe.clicked.connect(self.getInteger)

        FmPlotBtn=QPushButton("Plot Mesh File", self)
        FmPlotBtn.clicked.connect(self.GetDataFm)

        self.tab1.layout = QVBoxLayout(self)
        self.tab1.layout.addWidget(LabelFm)
        self.tab1.layout.addWidget(LabelMesh)
        self.tab1.layout.addWidget(btnNe)
        self.tab1.layout.addWidget(FmPlotBtn)
        self.tab1.setLayout(self.tab1.layout)

        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)

    def getInteger(self):
        donnees.Ne, okPressed = QInputDialog.getInt(self, "Get integer","Ne:", 66, 66, 98, 2)
        if okPressed:
            print(donnees.Ne)

    def GetDataFm(self):
        print('plot start') 
        data = {}
        data = Fm( donnees.fileFm , donnees.fileMesh )
        x,y=PloterFm(data,donnees.Ne)
        print(x[0],y[0])
        self.OpenPlotWindow(x,y)

    def OpenPlotWindow(self, x, y):
        print("OpenPlotWIndow is running")
        print(x[0],y[0])
        self.ThirdWindow = PlotWindoW(x,y)
        self.ThirdWindow.show()

Проблема: когда я запускаю свой код, он приходит к OpenPlotWindow, который получает все необходимые данные, но никогда не входит в PlotWindow ...

Пожалуйста, вы можете мне помочь?

1 Ответ

0 голосов
/ 30 мая 2018

Согласно документам для суперкласса QPushButton QAbstractButton, clicked принимает один аргумент, bool checked = false.На самом деле это довольно бесполезно в QPushButton, насколько я видел, но, тем не менее, ваша функция должна учитывать это.Попробуйте эту строку вместо

def GetDataFm(self, clicked=False):
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...