在 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
我正在开发一个用 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