在 pyqt5 中继承 window 创建新组件

Create new components on an inherited window in pyqt5

我正在开发一个用 PYQT5 制作的小型 GUI。我有一个主 window 和几个打开新 windows 的按钮。其中之一 windows 具有嵌入式 matplotlib 图和 2 个按钮。

因此,根据这个名为 "PlotWindow" 的现有 window,我想创建一个名为 "DynamicPlotWindow" 的新 window,但要添加更多元素(组合框、按钮、方法等.).换句话说,我想重用现有的 windows 并在其上放置更多组件。我能够创建新的 DynamicPlotWindow windows,但添加到其中的新组件不可见。

基于这个问题:PyQt5 Making a subclass widgets两个类的定义如下:

class PlotWindow(QMainWindow): #Matplotlib embeded + 2 buttons


        def __init__(self, parent):
            super(QMainWindow, self).__init__(parent)
            self.width = 1000
            self.height = 540
            self.setGeometry(10, 10, self.width, self.height)
            ...
            self.show()

        ...

    class DynamicPlotWindow(PlotWindow):

        def __init__(self, parent):
            super(PlotWindow, self).__init__(parent)
            self.btn = QPushButton("Test") # -> Not visible
            self.btn.resize(120,30)
            self.btn.move(600,800)
            ...
            self.show()

我的问题是我做错了什么?有可能做到吗? 最好的,

您的代码存在以下错误:

  • 该按钮不是 window 的 child,因此不会显示,解决方案是将其作为 parent
  • 传递给自己
  • window的尺寸为1000x540,但您想将按钮放置在明显超出高度的位置(600,800):800> 540。

解决方法是:

self.btn = QPushButton("Test", self) 
self.btn.resize(120,30)
self.btn.move(600, 200) # change y coordinate