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 保持纵横比 的相关文章

  • Python 3.6 DateTime Strptime 返回错误,而 Python 3.7 运行良好

    我刚刚为日期数据创建了一个数据类型 它返回一个datetime datetime object 这是代码 import datetime class Date def new cls dateTime args kwargs return
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • matplotlib:调整图形窗口大小而不缩放图形内容

    当您调整图形大小时 Matplotlib 会自动缩放图形窗口中的所有内容 通常这是用户想要的 但我经常想增加窗口的大小 为其他东西腾出更多空间 在这种情况下 我希望在更改窗口大小时预先存在的内容保持相同的大小 有谁知道一个干净的方法来做到这
  • 在Python中不断寻找用户输入

    我将如何编写一个始终寻找用户输入的 Python 程序 我想我希望有一个等于输入的变量 然后根据该变量的等于值会发生不同的情况 因此 如果变量是 w 那么它将执行某个命令并继续执行 直到收到另一个输入 例如 d 然后会发生不同的情况 但直到
  • Visual Studio Code:如何使用参数调试 Python 脚本

    我正在使用 Visual Studio Code 来调试 Python 脚本 下列的本指南 https code visualstudio com docs python debugging 我在中设置了参数launch json file
  • 如何使用 python http.server 运行 CGI“hello world”

    我使用的是 Windows 7 和 Python 3 4 3 我想在浏览器中运行这个简单的 helloworld py 文件 print Content Type text html print print print print h2 H
  • 无法使用 Python 循环分页 API 响应

    所以 我对这个感到摸不着头脑 使用 HubSpot 的 API 我需要获取我客户的 门户 帐户 中所有公司的列表 遗憾的是 标准 API 调用一次只能返回 100 家公司 当它返回响应时 它包含两个参数 使分页响应成为可能 其中之一是 ha
  • 更改 numpy 数组的结构强制给定值

    如何缩小栅格数据的比例4 X 6大小成2 X 3如果 2 2 像素内的任何元素包含 1 则大小强制选择 1 否则选择 0 import numpy as np data np array 0 0 1 1 0 0 1 0 0 1 0 0 1
  • Scrapy Splash,如何处理onclick?

    我正在尝试抓取以下内容 我能够收到响应 但我不知道如何访问以下项目的内部数据以抓取它 我注意到访问这些项目实际上是由 JavaScript 和分页处理的 这种情况我该怎么办 下面是我的代码 import scrapy from scrapy
  • Django 说“id 可能不为 NULL”,但为什么会这样呢?

    我今天要疯了 我只是尝试插入一条新记录 但它返回了 post blogpost id 可能不为 NULL 错误 这是我的模型 class BlogPost models Model title models CharField max le
  • Scapy:如何将新层(802.1q)插入现有数据包?

    我有一个数据包转储 想要将 VLAN 标记 802 1q 标头 注入到数据包中 怎么做 为了找到答案 我查看了Scapy 插入新层和记录问题 https stackoverflow com q 17259592 1381638 这确实很有帮
  • telethon 库:如何通过电话号码添加用户

    我正在研究 Telegram 的 Telethon 库 它可以使用 Telegram API 充当 Telegram 客户端 重要提示 这是电报客户端 API https core telegram org telegram api 而不是
  • 使用 os.forkpty() 创建一个伪终端以 ssh 到远程服务器并与其通信

    我正在尝试编写一个 python 脚本 它可以 ssh 到远程服务器 并可以从 python 客户端执行 ls cd 等简单命令 但是 在成功 ssh 到服务器后 我无法读取伪终端的输出 任何人都可以在这里帮助我 以便我可以在服务器上执行一
  • 如何在python中访问矩阵每个元素的相邻单元格?

    这里 如果两个单元共享边界 则它们被认为是相邻的 例如 A 5 6 4 2 1 3 7 9 8 这里 索引 0 0 的相邻元素位于索引 0 1 和 1 0 处 索引 1 1 的相邻元素位于索引 0 1 1 0 2 1 处 和 1 2 假设你
  • 在 Python 中将嵌套字典位置作为参数传递

    如果我有一个嵌套字典 我可以通过索引来获取键 如下所示 gt gt gt d a b c gt gt gt d a b c 我可以将该索引作为函数参数传递吗 def get nested value d path a b return d
  • 如何删除 pip 安装的所有软件包?

    如何从当前激活的虚拟环境中卸载 pip 安装的所有软件包 我发现这个片段作为替代解决方案 与重新创建 virtualenv 相比 删除库更加优雅 pip freeze xargs pip uninstall y 如果您通过 VCS 安装了软
  • 使用 conda 安装额外功能

    With pip我们可以使用方括号安装子包 例如与阿帕奇气流 https pythonhosted org airflow installation html pip install airflow all 有类似的东西吗conda或者我必
  • 列表中的“u”是什么意思?

    这是我第一次遇到这种情况 刚刚打印了一个列表 每个元素似乎都有一个u在它前面 即 u hello u hi u hey 它是什么意思 为什么列表的每个元素前面都会有这个 由于我不知道这种情况有多常见 如果您想了解我是如何遇到它的 我会很乐意
  • 如何通过 Selenium 内部的文本查找按钮(Python)?

    我有以下三个按钮 我不知道如何获取其中的文本 例如异常值 我试过browser find element by link text Outliers click 但出现 无法找到元素 错误 我该怎么做 See find element by
  • gnuplot:第 1 行:无效命令

    stackoverflow 上可爱的人们大家好 我正在尝试使用 gnuplot 绘制数据 我首先阅读表格并提取我想要的数据 我将此数据写入 dat 文件 截至目前 我只是尝试通过命令行绘制它 但会添加必要的代码以在 python 脚本工作后

随机推荐

  • 翻译为 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 中 我已将其放入主类的构造函