这两天又是课程又是作业又是摸鱼,根本没有时间学习!
经过众多的cv后,终于摸清楚了一点,并且实现出了文件导入功能和切换图片功能!
文件导入
采用QFileDialog类,我的感受是,灰常简单灰常好用,太好用啦!
直接贴代码
# 选择文件夹
folder_name = QFileDialog.getExistingDirectory(self, "选择文件夹","../")
# 选择文件
fname ,_ = QFileDialog.getOpenFileNames(self, 'Open Images', '../', 'Image files (*.png *.jpg)')
只要调用这个方法,窗口会自动弹出一个弹窗,然后选择你需要的文件夹或者文件就行了。QFileDialog.getExistingDirectory()
方法会弹出一个弹窗,选择文件夹后,会将该文件夹的路径赋给folder_name,最后一个参数是弹窗打开时所处的位置。第二个QFileDialog.getOpenFileNames()
返回的是一个数组,数组里每个元素是一个文件路径名,还可以设置过滤器,比如我是只选择png和jpg文件。
知道路径后,那下面就是小case了,找到显示图片的组件,我用的是QLabel,通过QLabel的setPixmap()或者setImage(),如下:
path = fname[0]
pix = QPixmap(path)
self.label_image.setPixmap(pix)
切换图片
还有需求,实现点击切换图片,后面还需要对图片进行操作。后面的很麻烦,不过切换图片肯定轻轻松松。
现在的实现效果如下:
中间的是图片,不是我写的ui!哪一天能手写vscode,估计我也是行业大牛了吧。
左边我用的是QListWidget
组件,这是基于QListWidgetItem
的,也就是说里面存放的都是QListWidgetItem
,幸运的是,这玩意儿是有clicked的信号的,一开始vscode没给我找到,估计是哪个父类有的吧。
下面是每个item的click的槽函数,单击后,item会变成selected被选中状态。然后可以在listwidget那个组件里的selectedItems()
中找到。
def change_image(self):
path = self.listWidget.selectedItems()[0].path
pix = QPixmap(path)
self.label_image.setPixmap(pix)
其实这里面还有很多东西学到的东西没讲,比如怎么去写槽函数,怎么去写把item加入listwidget中的函数,listwidget的继承关系是什么,它有哪些属性可以怎么设置等等。
但是我太累了,组会也要结束了。