B B*_*B B 5 python qt pyqt thumbnails pyside
我希望创建一个图像浏览器,在本机外观文件浏览器上显示漂亮均匀的平铺缩略图.
在Windows上,我希望它看起来像这样:
在ubuntu上,我希望它看起来与此类似:
但这就是现在可用的:
我面临的一个问题涉及为图像指定正确的缩略图大小.我知道我可以使用代码以编程方式设置缩略图大小self.setIconSize(QSize(32, 32)),但是,以这种方式设置缩略图大小可能会导致大小与系统默认值不一致,使其看起来不自然.
所以我的问题是:如何获得在用户桌面上设置的"默认缩略图大小",使我的缩略图外观与用户的操作系统一致(使用qt5或更具体的PySide2或PyQt5)?
这是我到目前为止使用的代码:`
import sys
from PySide2.QtCore import QSize
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QApplication, QListWidget, QListWidgetItem, QMainWindow
class ThumbsWindow(QListWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.initUI()
def initUI(self):
self.setViewMode(QListWidget.IconMode)
self.setIconSize(QSize(32, 32))
myimage_path = "./images/web.png"
myimage_path1 = "./images/image1.jpg"
myimage_path2 = "./images/image2.jpg"
myimage_path3 = "./images/image3.jpg"
image_list = [myimage_path, myimage_path1, myimage_path2, myimage_path3]
# create a list of QIcons
image_items = [QListWidgetItem(QIcon(path_x), "sample image") for path_x in image_list]
# add each of the QIcons onto the QListWidget
for image_item in image_items:
self.addItem(image_item)
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
t = ThumbsWindow()
self.setCentralWidget(t)
self.resize(400, 300)
self.setWindowTitle('Image Thumbnails')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
`
我知道我回答这个问题可能有点晚了,但我相信您正在从错误的角度看待这个问题。
正如其他人所说,从技术上讲,图像缩略图没有“系统默认”大小。缩略图显示在文件管理器程序(Windows 资源管理器、Nautilus 等)上,这决定了缩略图的大小。不是系统。
上述两个程序都使用户能够调整缩略图的大小,因此即使有默认的系统设置,用户首选的大小也不会是通用的。
您可能想要做的是打开 GUI 旁边的默认文件管理器并比较图标大小。如果您的文件管理器小于默认的文件管理器,请调整代码中的图标大小(按照上面发布的方式)并再次比较。当它们看起来足够接近适合您的相同尺寸时,这就是您的默认尺寸。如果你想给用户调整大小的选项,添加选项来调整它,然后将新的大小保存为应用程序启动时初始化的图标大小,允许用户选择自己的默认大小。
除此之外,我不相信有办法从默认文件管理器中提取图标大小。
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |