QPixmap 保持纵横比

2023-12-12

我正在编写一个程序,允许我通过他们的 API 将照片上传到 TUMBLR,我已经可以正常上传了(谢谢你们)。

我在 GUI 的一侧放置了一个“queueBox”,它显示图像名称,并且它们存储在 QListWidget 中。我已将其放入主类的构造函数中:

def __init__(self):
    QtGui.QMainWindow.__init__(self)
    self.setupUi(self)
    self.queueBox.itemClicked.connect(self.displayPhoto)

我有这个方法:

def displayPhoto(self, item):
    tempName = (item.text())
    print tempName
    self.myLabel.setPixmap(QtGui.QPixmap(_fromUtf8(directory + '\\' + tempName)))  
    ## self.myLabel.pixmap(QPixmap.scaled(aspectRatioMode = Qt.IgnoreAspectRatio))
    ## ^ ^ ^ What do I do with this? How do I set it to maintain aspect ratio?
    ## Currently it says ''NameError: global name 'Qt' is not defined''

这成功地将图像绘制到 myLabel(这是一个 QLabel)上,但是,它的缩放比例非常大,我有

self.myLabel.setScaledContents(True)

在我的 ui_mainWindow 类中,如果我将其设置为 False,它会修复缩放,但它只显示图像的一小部分,因为图像比 QLabel 大得多。我想要的是能够保持纵横比,这样它看起来就不会缩放和可怕。

我找到了这个:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qpixmap.html它说明了如何使用它,但是我无法让它按照我的评论中上面的代码所示工作。有谁知道如何使用这个?如果是这样,你能给我提供一个例子吗?我已经尝试过搜索,但我得到的大多数结果都是 C++ 中的工作示例,而不是 python。

Thanks!


摆脱

self.myLabel.setScaledContents(True)

调用(或将其设置为 False)。它用像素图填充您的小部件,而不关心宽高比。

如果您需要调整大小QPixmap,正如你所发现的,scaled是所需的方法。但你调用它是错误的。我们看一下定义:

QPixmap QPixmap.scaled (self, 
                        int width, 
                        int height, 
                        Qt.AspectRatioMode aspectRatioMode = Qt.IgnoreAspectRatio,
                        Qt.TransformationMode transformMode = Qt.FastTransformation)

该函数的返回类型是QPixmap,所以它返回一个缩放的copy原始像素图。

那么你需要一个width and a height,描述像素图的(最大)最终大小。

还有两个可选参数。aspectRatioMode处理长宽比。这文档详细介绍了不同的选项及其效果。transformMode定义缩放的方式(哪种算法)。它可能会改变图像的最终质量。你可能不需要这个。

所以,把它们放在一起你应该有(Qt命名空间在里面QtCore):

# substitute the width and height to desired values
self.myLabel.setPixmap(QtGui.QPixmap(_fromUtf8(directory + '\\' + tempName)).scaled(width, height, QtCore.Qt.KeepAspectRatio))

或者,如果您有固定尺寸QLabel,你可以调用.size()从中获取尺寸的方法:

self.myLabel.setPixmap(QtGui.QPixmap(_fromUtf8(directory + '\\' + tempName)).scaled(self.myLabel.size(), QtCore.Qt.KeepAspectRatio))

Note: 你可能想用os.path.join(directory, tempName)为了directory + '\\' + tempName part.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QPixmap 保持纵横比 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • SQLALchemy .query:类“Car”的未解析属性引用“query”

    我有一个这里已经提到的问题https youtrack jetbrains com issue PY 44557 https youtrack jetbrains com issue PY 44557 但我还没有找到解决方案 我使用 Pyt
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 翻译为 DCG Semicontext 不起作用 - 继续

    作为对此的后续行动question这提出了问题 返回列表中项目的计数 但如果两个相同的项目彼此相邻 则不增加计数 这段代码是我用 DCG 和半上下文解决这个问题的最接近的代码 lookahead C C gt C empty list No
  • 自动完成文本视图还是搜索对话框?

    我需要做的只是可以单击关键字的建议并将用户带到界面 xml 布局 例如下面的结果 存在 丰富 缺乏 我在 R layout abide 中创建了它们 Though AutoCompleteTextView看起来没那么麻烦 但是可以做到吗 或
  • 规则已被弃用,取而代之的是什么呢(TSQL)?

    规则 Transact SQL 1 是可重用的 从而克服了检查约束不可重用的缺点 现在我读到 1 此功能将在 Microsoft SQL Server 的未来版本中删除 避免在新的开发工作中使用此功能 并计划修改当前使用此功能的应用程序 我
  • 在地图中绘制半径为定义距离的圆

    我能够绘制地图并为特定点添加标题 library maps map state text 80 83 35 19 Charlotte cex 6 我还可以绘制一个以该点为中心的圆 symbols 80 83 35 19 circles 2
  • 如何从 HTML 页面获取 Javascript 变量?

    在互联网页面的源代码中 有一个包含 JSON 数据的 Javascript 变量 我想将其存储在 PHP 程序的变量中 知道如何做吗 该文件位于公共 html 链接上 如下所示 感谢您的时间和答复 您使用 互联网上的页面 和 公共 这两个词
  • 如何以编程方式知道它是Android中的平板电脑还是手机? [复制]

    这个问题在这里已经有答案了 我想检测给定的设备是 Android 中的平板电脑还是手机 我已经在模拟器中尝试过这两个 但没有成功 两者都在这里 First if getResources getConfiguration screenLay
  • 如何在 TextArea 上使用 TAB/Enter KeyPressed,并在不使用内部 API 的情况下替换为 focustraversal 或 Enter 键?

    我需要一个可以自动换行 添加滚动条等的控件 但忽略回车键并使用 tab shift 选项卡跳转到下一个控件 我似乎无法弄清楚这一点 这是我做的控件 看起来只是简单的停留在文本区域 这是从网上的一个旧示例中使用的 似乎只有当 textArea
  • JAX-RS / Jersey 中可变参数数组的路径段序列?

    JAX RS Jersey 允许使用以下方法将 URL 路径元素转换为 Java 方法参数 PathParam注释 有没有办法将未知数量的路径元素转换为 vararg Java 方法的参数 I e foo bar x y z应该转到方法 f
  • 选定的表行 angular.js

    我有一张桌子ng class像这样的指令 tbody tr class clickable row td firm fileName td td firm extracted td td firm vulnScore td td fir t
  • 在基本适配器中滚动后,TextView 值更改回之前的值

    我一直在研究这个问题 但找不到解决方案 关于我的自定义列表视图的所有内容似乎都运行正常 当我点击holder feedUpVoteButton 文本发生变化 1正确 但是 当我向下滚动并向上滚动时 文本值将恢复为单击之前的值 我拒绝使用no
  • 如何在Python中过滤字典列表?

    我有一个字典列表 如下所示 VehicleList id 1 VehicleType Car CreationDate datetime datetime 2021 12 10 16 9 44 872000 id 2 VehicleType
  • 如何在javafx中创建动态可调整大小的形状?

    我有三个问题 我想创建带有框边界的可调整大小的形状 我还想知道如何在窗格中选择子项 我正在一个窗格上创建多个形状 我想改变该形状的一些属性 比如填充 我该怎么做 Thanx 下一个例子将回答您的问题 对于 1 它使用绑定 将窗格大小与矩形大
  • 通过邮件发送用户选择的附件

    问题 我希望用户可以向我发送带有附件的邮件 他们可以使用 html 中的输入文件按钮选择文件 问题是找不到该文件 无需附件即可正常工作 我收到这个错误 文件 C 程序文件 x 86 ExpressGIPENGLISH pptx 找不到 II
  • ISO 8601 测试用例的 ECMAScript 5 Date.parse 结果

    以下测试用例的正确结果是什么 Chrome 19 Opera 12 Firefox 11 IE 9 Safari 5 1 1 console log Date parse 2012 11 31T23 59 59 000Z 135440639
  • ArUco 位姿估计中的不稳定值

    我正在尝试使用 Aruco 标记找到相机的方向 从旋转矩阵中提取的欧拉角在超过某一点时不稳定 随着相机与标记的距离增加 相机的偏航角值不稳定 标记上的 Z 轴翻转 欧拉角不稳定 每帧都不相同 需要时间才能稳定 如何获得相机和标记之间的偏航角
  • HTML/CSS 中带 div 的水平(内联)列表

    我正在尝试构建一个简单的水平列表 其中每个列表项都是一个 div 我希望它们全部坐在一起 当我尝试使用下面的代码时 div 最终会出现在不同的行上 这是我所得到的 HTML ul li div div li li div div li li
  • 为Android开发创建库?

    我对 Android 开发还很陌生 但我对 Java 和 Eclipse 有一些经验 我正在寻找创建可重用库 控件 帮助程序 标准 活动等 的方法 这些库可以在我自己的项目中使用 但也可以在不公开源代码的情况下分发给其他开发人员 通常 我会
  • 将十进制小时转换为 HH:MM:SS

    我正在寻找一种将十进制小时转换为 HH MM SS 的方法 例如 作为输入 4 927778 hours 期望的输出 04 55 40 你可以尝试下面的方法 dh lt 4 927778 strftime as POSIXct dh 60
  • 如何删除空格并检查字符串是否是回文?

    我试图弄清楚如何删除空格 然后检查删除空格的字符串是否是回文 我已经分别尝试了这两件事 但我无法让它们一起工作 int check palindrome char int main char s1 20 printf Enter the s
  • QPixmap 保持纵横比

    我正在编写一个程序 允许我通过他们的 API 将照片上传到 TUMBLR 我已经可以正常上传了 谢谢你们 我在 GUI 的一侧放置了一个 queueBox 它显示图像名称 并且它们存储在 QListWidget 中 我已将其放入主类的构造函