在 pyqt5 的继承窗口上创建新组件
Posted
技术标签:
【中文标题】在 pyqt5 的继承窗口上创建新组件【英文标题】:Create new components on an inherited window in pyqt5 【发布时间】:2019-08-29 18:37:46 【问题描述】:我正在开发一个用 PYQT5 制作的小型 GUI。我有一个带有几个按钮的主窗口,它们可以打开新窗口。其中一个窗口有一个嵌入式 matplotlib 图和 2 个按钮。
所以,从这个名为“PlotWindow”的现有窗口中,我想创建一个名为“DynamicPlotWindow”的新窗口,但要添加更多元素(组合框、按钮、方法等)。换句话说,我想重用现有的窗口并在它们上面放置更多的组件。我能够创建新的 DynamicPlotWindow 窗口,但添加到其中的新组件不可见。
基于这个问题: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()
我的问题是我在这里做错了什么?有可能做到吗? 最好的,
【问题讨论】:
【参考方案1】:您的代码有以下错误:
按钮不是窗口的子窗口,因此不会显示,解决方案是将其作为父窗口传递给自身 窗口大小为 1000x540,但您想将按钮放置在明显超出高度的位置 (600,800):800> 540。解决办法是:
self.btn = QPushButton("Test", self)
self.btn.resize(120,30)
self.btn.move(600, 200) # change y coordinate
【讨论】:
像魅力一样工作!非常感谢你!大师!以上是关于在 pyqt5 的继承窗口上创建新组件的主要内容,如果未能解决你的问题,请参考以下文章