2017-11-08 7 views
0

Ich habe diese sehr einfache GUI, aber ich kann den Druckknopf nicht funktionieren. Ich habe versucht, Teil und Lambda in der clicked.connect-Befehl, aber hatte kein Glück. Ich weiß, dass ich den Knopf nur einmal drücken konnte, da ich keine Schleife habe, um die Position jedes neuen Eingabefeldes zu ändern, aber ich möchte nur, dass es zuerst funktioniert.pyqt5 QPushButton() (mit clicked.connect()) funktioniert nicht

Dank für Sie jeden Rat

import sys 
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QSizePolicy, 
         QDoubleSpinBox, QLabel, QCheckBox, QMainWindow, 
QGridLayout) 
from PyQt5.QtCore import QCoreApplication 
import matplotlib 
from matplotlib.figure import Figure 
import numpy as np 
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar 



class MainWindow(QWidget): 

    def __init__(self): 
     super().__init__() 

     self.initUI() 

    def initUI(self): 

     # Geometry of main window: 
     self.setGeometry(200, 200, 1000, 1000) 
     self.setWindowTitle('Simulation') 

     #--------------------------------------- 
       # Button for adding blades 
     blade_button = QPushButton('Add', self) 
     blade_button.clicked.connect(self.add_Bladebox) 
     blade_button.move(800, 600) 


     #--------------------------------------- 

     self.show() 

    # Method for input box: 
    def inputBox(self, left, top, maxvalue, step, default,decimals): 
     box = QDoubleSpinBox(self) 
     box.move(left,top) 
     box.setDecimals(decimals) 
     box.setMaximum(maxvalue) 
     box.setSingleStep(step) 
     box.setProperty("value", default) 
     box.resize(box.sizeHint()) 
     return box 

    # Method for adding blade boxes 
    def add_Bladebox(self): 
     left = 900 
     top = 500 
     maxvalue = 3 
     step=1 
     default=0 
     decimals=1 
     blade_box = self.inputBox(left, top, maxvalue, step, default, decimals) 


if __name__ == '__main__': 

    app = QCoreApplication.instance() 
    if app is None: 
     app = QApplication(sys.argv) 
    ex = MainWindow() 
    sys.exit(app.exec_()) 
+0

was PlotCanvas ist? Ich habe diesen Fehler in Ihrem Code: NameError: Name 'PlotCanvas' ist nicht definiert – DRPK

+0

Sie haben ein Apostroph direkt nach Leinwand. Wahrscheinlich hat es deshalb nicht funktioniert. Außerdem entferne ich die Version des Befehls, der funktioniert, und lasse den, der nicht funktioniert (zur besseren Übersicht). –

+0

Sie können die Leinwand auch ganz weglassen. –

Antwort

0

Dieses Versuchen:

import sys 
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QSizePolicy, 
         QDoubleSpinBox, QLabel, QCheckBox, QMainWindow, 
QGridLayout) 
from PyQt5.QtCore import QCoreApplication 
import matplotlib 
from matplotlib.figure import Figure 
import numpy as np 
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar 



class MainWindow(QWidget): 

    def __init__(self): 
     super().__init__() 

     self.initUI() 

    def initUI(self): 

     # Geometry of main window: 
     self.setGeometry(200, 200, 1000, 1000) 
     self.setWindowTitle('Simulation') 

     #--------------------------------------- 
       # Button for adding blades 
     blade_button = QPushButton('Add', self) 
     blade_button.clicked.connect(self.add_Bladebox) 
     blade_button.move(800, 600) 


     #--------------------------------------- 

     self.show() 

    # Method for input box: 
    def inputBox(self, left, top, maxvalue, step, default,decimals): 
     box = QDoubleSpinBox(self) 
     box.move(left,top) 
     box.setDecimals(decimals) 
     box.setMaximum(maxvalue) 
     box.setSingleStep(step) 
     box.setProperty("value", default) 
     box.resize(box.sizeHint()) 
     box.show() 

    # Method for adding blade boxes 
    def add_Bladebox(self): 

     print('This is Ok') 

     left = 900 
     top = 500 
     maxvalue = 3 
     step = 1 
     default = 0 
     decimals = 1 
     self.inputBox(left, top, maxvalue, step, default, decimals) 


if __name__ == '__main__': 

    app = QCoreApplication.instance() 
    if app is None: 
     app = QApplication(sys.argv) 
    ex = MainWindow() 
    sys.exit(app.exec_()) 
Verwandte Themen