使主窗口在pyqt中可滚动

时间:2019-07-05 18:21:57

标签: python user-interface matplotlib pyqt pyqt5

我有一个使用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()

我在这里没有任何滚动区域,因为我认为我从来没有做过正确的事情。因此,这只会打开一个窗口,其中包含所有正确的图,但不会滚动。

0 个答案:

没有答案