在PyQT5中,开发GUI应用时,常常需要创建用户界面(UI)并处理各种窗口元素,如列表、滚动窗口等。本篇文章将探讨如何利用PyQT5来实现这些功能,特别是如何展示图片。 我们需要创建一个列表窗口来显示文件夹中的所有文件。在PyQT5中,我们可以使用`QListWidget`来实现这一目标。例如: ```python self.listWidget = QtWidgets.QListWidget(self.gridLayoutWidget) self.listWidget.setMaximumSize(QtCore.QSize(16777215, 400)) self.listWidget.setObjectName("listWidget") self.listWidget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) ``` 这段代码创建了一个`QListWidget`,设置了最大尺寸,并启用了垂直滚动条。接着,通过监听`clicked`信号,当用户点击列表项时,调用`viewList`函数显示所选图片: ```python self.pushButton_10.clicked.connect(TabWidget.viewList) ``` 在`viewList`函数中,遍历指定目录下的文件,并将它们添加到列表中: ```python for i in os.listdir("./photo"): self.listWidget.addItem("./photo"+"/"+i) ``` 然后,设置`currentItemChanged`信号与`image`函数连接,这样在选择列表项时,可以获取选中项的文本,并显示对应的图片: ```python self.listWidget.currentItemChanged.connect(TabWidget.image) ``` 在`image`函数里,读取当前选中项的文本,将其作为图片路径,并在标签`label`上显示缩放后的图片: ```python print(self.listWidget.currentItem().text()) imagefile=self.listWidget.currentItem().text() png = QtGui.QPixmap(imagefile).scaled(self.label.width(), self.label.height()) self.label.setPixmap(png) ``` 接下来,我们讨论如何在滚动窗口中显示多个图像。可以使用`QScrollArea`来创建一个可滚动的区域。定义一个`QWidget`子类作为内容区域,然后在其中放置多个`QLabel`来显示图片: ```python self.filewidget = QWidget() self.filewidget.setMinimumSize(350, 1800) for position, name in zip(positions, names): lab = QLabel(self.filewidget) lab.setFixedSize(100, 150) pix = QtGui.QPixmap(name) lab.setPixmap(pix) lab.move(100 * position[0] + 50, 150 * position[1] + 70) self.scrollArea.setWidget(self.filewidget) ``` 在这个例子中,`positions`是一个二维坐标列表,用于定位每个`QLabel`,`names`存储图片文件名。通过设置`QScrollArea`的`widget`属性为`filewidget`,实现了图片的滚动展示。 虽然这种方法可以显示多张图片,但无法对单个图片进行点击操作。相比之下,使用`QListWidget`可以实现点击事件,从而对图片进行进一步处理。 总结来说,PyQT5提供了丰富的窗口和控件来构建复杂的UI。在本文中,我们学习了如何使用`QListWidget`创建列表窗口显示文件,以及如何在`QScrollArea`中滚动显示多张图片。理解并熟练掌握这些方法,可以帮助我们更好地构建和定制PyQT5应用程序。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/release/download_crawler_static/12862525/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 4
- 资源: 959
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)