How do you put a schedule in QFrame?



  • How to make the schedule set up clear. QFrame (sighs)insert_frame"?

    A new window is being created, ignoring the shape of the form created by the Qt Designer

    How to make the schedule fit into the existing element.insert_frame"?

    ui_example.py:

    #from ui_example import Ui_DialogWindowAccept
    import sys
    import matplotlib
    matplotlib.use('agg')
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
    from matplotlib.figure import Figure
    import random
    

    from PyQt5 import QtCore, QtGui, QtWidgets
    class Ui_DialogWindowAccept(object):
    def setupUi(self, DialogWindowAccept):
    DialogWindowAccept.setObjectName("DialogWindowAccept")
    DialogWindowAccept.resize(620, 520)
    DialogWindowAccept.setMinimumSize(QtCore.QSize(0, 0))
    DialogWindowAccept.setMaximumSize(QtCore.QSize(16000, 16000))
    self.centralwidget = QtWidgets.QWidget(DialogWindowAccept)
    self.centralwidget.setMaximumSize(QtCore.QSize(16000, 16000))
    self.centralwidget.setObjectName("centralwidget")
    self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
    self.verticalLayout.setContentsMargins(0, 0, 0, 0)
    self.verticalLayout.setSpacing(0)
    self.verticalLayout.setObjectName("verticalLayout")
    self.header = QtWidgets.QFrame(self.centralwidget)
    self.header.setMinimumSize(QtCore.QSize(0, 70))
    self.header.setMaximumSize(QtCore.QSize(16777215, 70))
    self.header.setStyleSheet("")
    self.header.setFrameShape(QtWidgets.QFrame.NoFrame)
    self.header.setFrameShadow(QtWidgets.QFrame.Raised)
    self.header.setObjectName("header")
    self.horizontalLayout = QtWidgets.QHBoxLayout(self.header)
    self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
    self.horizontalLayout.setSpacing(0)
    self.horizontalLayout.setObjectName("horizontalLayout")
    self.label = QtWidgets.QLabel(self.header)
    self.label.setStyleSheet("")
    self.label.setAlignment(QtCore.Qt.AlignCenter)
    self.label.setObjectName("label")
    self.horizontalLayout.addWidget(self.label)
    self.verticalLayout.addWidget(self.header)
    self.insert_frame = QtWidgets.QFrame(self.centralwidget)
    self.insert_frame.setMinimumSize(QtCore.QSize(600, 310))
    self.insert_frame.setFrameShape(QtWidgets.QFrame.NoFrame)
    self.insert_frame.setFrameShadow(QtWidgets.QFrame.Raised)
    self.insert_frame.setObjectName("insert_frame")
    self.verticalLayout.addWidget(self.insert_frame)
    DialogWindowAccept.setCentralWidget(self.centralwidget)

        self.retranslateUi(DialogWindowAccept)
        QtCore.QMetaObject.connectSlotsByName(DialogWindowAccept)
    
    def retranslateUi(self, DialogWindowAccept):
        _translate = QtCore.QCoreApplication.translate
        DialogWindowAccept.setWindowTitle(_translate("DialogWindowAccept", "MainWindow"))
        self.label.setText(_translate("DialogWindowAccept", "Example"))
    

    main.py:

    class MplCanvas(FigureCanvas):

    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
        super(MplCanvas, self).__init__(fig)
    

    class GraphWindow(QtWidgets.QMainWindow):

    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.ui = Ui_DialogWindowAccept()
        self.ui.setupUi(self)
        self.setWindowModality(QtCore.Qt.ApplicationModal)
    
        self.canvas = MplCanvas(self, width=5, height=4, dpi=100)
        self.setCentralWidget(self.canvas)
    
        n_data = 50
        self.xdata = list(range(n_data))
        self.ydata = [random.randint(0, 10) for i in range(n_data)]
    
        GraphWindow.update_plot(self)
    
        self.show()
    
    def update_plot(self):
    
        self.ydata = self.ydata[1:] + [random.randint(0, 10)]
        self.canvas.axes.cla()
        self.canvas.axes.plot(self.xdata, self.ydata, 'r')
        self.canvas.draw()
    

    Introduce a minimum reproduced example.

    Structure in Qt Designer:

    DialogWindowAccept->centralwidget->header(->label), insert_frame



  • No, you're not creating a new window, ignoring the shape created in Qt Designer, You're setting a view. canvas It's like a central view of the main window.

    self.setCentralWidget(self.canvas)
    

    And so you all lost what you created in Qt Designer.


    Yeah, you can put in a Qt Designer any kind of thing. @ PITONISTversion3-8 refers to my answer, where I told you how to do it.


    In your case, also, it's possible to just set up a manager of the company.

    hlayout = QtWidgets.QHBoxLayout(self.insert_frame)
    

    and add a view

    hlayout.addWidget(self.canvas)
    

    import sys
    import random
    from PyQt5 import QtCore, QtGui, QtWidgets
    import matplotlib
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
    from matplotlib.figure import Figure
    

    class Ui_DialogWindowAccept(object):
    def setupUi(self, DialogWindowAccept):
    DialogWindowAccept.setObjectName("DialogWindowAccept")
    DialogWindowAccept.resize(620, 520)
    DialogWindowAccept.setMinimumSize(QtCore.QSize(0, 0))
    DialogWindowAccept.setMaximumSize(QtCore.QSize(16000, 16000))
    self.centralwidget = QtWidgets.QWidget(DialogWindowAccept)
    self.centralwidget.setMaximumSize(QtCore.QSize(16000, 16000))
    self.centralwidget.setObjectName("centralwidget")
    self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
    self.verticalLayout.setContentsMargins(0, 0, 0, 0)
    self.verticalLayout.setSpacing(0)
    self.verticalLayout.setObjectName("verticalLayout")
    self.header = QtWidgets.QFrame(self.centralwidget)
    self.header.setMinimumSize(QtCore.QSize(0, 70))
    self.header.setMaximumSize(QtCore.QSize(16777215, 70))
    self.header.setStyleSheet("")
    self.header.setFrameShape(QtWidgets.QFrame.NoFrame)
    self.header.setFrameShadow(QtWidgets.QFrame.Raised)
    self.header.setObjectName("header")
    self.horizontalLayout = QtWidgets.QHBoxLayout(self.header)
    self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
    self.horizontalLayout.setSpacing(0)
    self.horizontalLayout.setObjectName("horizontalLayout")
    self.label = QtWidgets.QLabel(self.header)
    self.label.setStyleSheet("")
    self.label.setAlignment(QtCore.Qt.AlignCenter)
    self.label.setObjectName("label")
    self.horizontalLayout.addWidget(self.label)
    self.verticalLayout.addWidget(self.header)
    self.insert_frame = QtWidgets.QFrame(self.centralwidget)
    self.insert_frame.setMinimumSize(QtCore.QSize(600, 310))
    self.insert_frame.setFrameShape(QtWidgets.QFrame.NoFrame)
    self.insert_frame.setFrameShadow(QtWidgets.QFrame.Raised)
    self.insert_frame.setObjectName("insert_frame")
    self.verticalLayout.addWidget(self.insert_frame)
    DialogWindowAccept.setCentralWidget(self.centralwidget)

        self.retranslateUi(DialogWindowAccept)
        QtCore.QMetaObject.connectSlotsByName(DialogWindowAccept)
    
    def retranslateUi(self, DialogWindowAccept):
        _translate = QtCore.QCoreApplication.translate
        DialogWindowAccept.setWindowTitle(_translate("DialogWindowAccept", "MainWindow"))
        self.label.setText(_translate("DialogWindowAccept", "Example"))
    

    class MplCanvas(FigureCanvas):
    def init(self, parent=None, width=5, height=4, dpi=100):
    fig = Figure(figsize=(width, height), dpi=dpi)
    self.axes = fig.add_subplot(111)
    super(MplCanvas, self).init(fig)

    class GraphWindow(QtWidgets.QMainWindow, Ui_DialogWindowAccept):
    def init(self):
    super().init()
    self.setupUi(self)

    ??? self.setWindowModality(QtCore.Qt.ApplicationModal)

        self.canvas = MplCanvas(self, width=5, height=4, dpi=100)
        
        hlayout = QtWidgets.QHBoxLayout(self.insert_frame)              # +++ 
        hlayout.addWidget(self.canvas)                                  # +++ 
        
        n_data = 50
        self.xdata = list(range(n_data))
        self.ydata = [random.randint(0, 10) for i in range(n_data)]
    
        self.update_plot()
    
    def update_plot(self):
        self.ydata = self.ydata[1:] + [random.randint(0, 10)]
        self.canvas.axes.cla()
        self.canvas.axes.plot(self.xdata, self.ydata, 'r')
        self.canvas.draw()
    

    if name == 'main':
    app = QtWidgets.QApplication(sys.argv)
    ex = GraphWindow()
    ex.show()
    sys.exit(app.exec())

    введите сюда описание изображения



Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2