我有一个使用PyQt5制作的桌面应用程序,其中包含许多交互式matplotlib图(将来会添加一些按钮,文本,向下滚动菜单)。但是,我的绘图无法全部显示在同一页面上,因此无法使窗口可滚动。
我知道我应该将所有内容都放在ScrollArea中,但是我是PyQt的新手,所以我一直在寻找方法上遇到很多麻烦。我了解您可以将小部件添加到ScrollArea,以便在小部件不适合屏幕时使其滚动。当“小部件”实际上不是小部件而是绘图和按钮的集合时,我该如何工作。
例如,下面是仅包含2个图的主窗口。由于地块的数量与问题不相关,我将其余部分剔除。
$result = [];
foreach($array as $k=>$v){
foreach($v as $k1=>$v1){
$k1 = preg_replace('/\d_/', '', $k1);
$result[][$k1] = $v1;
}
}
print_r($result);
这大概是我制作情节的方式。再次,我删节了一些部分,因为代码太长了。
class App(QMainWindow):
def __init__(self):
super().__init__()
self.left = 10
self.top = 100
self.title = 'MLVis'
self.width = 5000
self.height = 4000
self.d = None
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button = QPushButton('Unpinch ICE plots', self)
button.setToolTip('This s an example button')
button.move(1000,1600)
button.resize(300,150)
self.d = DataClass()
age_ice = cICE(self, dataclass=self.d, feature='age', button=button)
age_ice.move(0,0)
edunum_ice = cICE(self, dataclass=self.d, feature='edu-num', button=button)
edunum_ice.move(800,0)
self.show()
我在这里没有任何滚动区域,因为我认为我从来没有做过正确的事情。因此,这只会打开一个窗口,其中包含所有正确的图,但不会滚动。