【发布时间】:2017-01-30 14:46:22
【问题描述】:
我希望创建一个图像浏览器,该浏览器可以在具有本机外观的文件浏览器上很好地均匀地显示平铺缩略图。
在 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_())
`
【问题讨论】:
-
是什么让您认为存在默认系统大小?在你的问题中,我没有看到任何证据。无论如何,你为什么不能让用户自己选择尺寸(这可能是所有其他应用程序所做的)?
-
一个例子是 ubuntu 用户,当打开他的“图片”文件夹时,会遇到该文件夹中任何图片的缩略图版本。他会看到这些缩略图的统一默认大小。在显示文件夹的缩略图内容之前,Ubuntu 不会弹出一个对话框,要求用户输入他想要的缩略图大小。 windows用户也一样。 Windows 用户会看到具有统一默认大小的缩略图,即使没有先要求用户指定他想要的缩略图大小。
-
但这并不表明存在默认的 system 大小。每个应用程序只做自己的事情。
-
我向您推荐我的第一条评论 ;-) 也许您应该花时间验证在您希望支持的所有平台上是否存在这样的系统范围默认值 - 否则它只是一只野鹅追逐,不是吗?就个人而言,我只会:(1)选择一个尺寸,任何尺寸,(2)允许用户根据自己的喜好进行调整。
-
感谢您抽出宝贵时间回复,但是,老实说,我不明白验证如此不言自明的事情如何有助于解决此问题。我已经提供了一个示例,我发布的图像也显示了我想要实现的目标。此外,简单的谷歌搜索术语“windows 默认缩略图大小”和“ubuntu 默认缩略图大小”显示了如何将这些操作系统的默认缩略图大小更改为其他内容,表明存在默认系统值之类的东西缩略图。我只想知道如何使用 Qt 获得该值。
标签: python qt pyqt thumbnails pyside