| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 
- from PyQt5.QtCore import QTimer, QStringListModel, Qt
 
 - pix = QPixmap.fromImage(qimage)
 
 - pix_scaled = pix.scaled(pix.width(), pix.height(), aspectRatioMode=Qt.KeepAspectRatio)
 
 - self.label_10.setPixmap(pix_scaled)
 
 
  复制代码 
 
想要实现 图片的比例随着界面的拉伸缩小而不破坏长宽比例 ,然鹅不尽人意。 
KeepAspectRatio 参数根本没起作用 这是什么原因?
 本帖最后由 hrp 于 2021-4-11 01:15 编辑 
简单写了个例子:
 - # coding: utf-8
 
  
- import sys
 
  
- from PyQt5.QtCore import Qt, pyqtSignal
 
 - from PyQt5.QtWidgets import (
 
 -     QApplication,
 
 -     QHBoxLayout,
 
 -     QLabel,
 
 -     QLineEdit,
 
 -     QPushButton,
 
 -     QVBoxLayout,
 
 -     QWidget,
 
 - )
 
  
 
- class MainWin(QWidget):
 
 -     """主窗口类"""
 
  
-     def __init__(self):
 
 -         super().__init__()
 
 -         self.resize(500, 100)
 
 -         # 初始化一个属性用于测试
 
 -         self.my_string = None
 
 -         self.label = QLabel("文字显示位置")
 
 -         self.pb = QPushButton("显示子窗口")
 
 -         self.setup_ui()
 
 -         self.show()
 
  
-     def setup_ui(self):
 
 -         """设置主窗口布局"""
 
 -         hlayout = QHBoxLayout()
 
 -         hlayout.addWidget(self.label)
 
 -         hlayout.addWidget(self.pb)
 
 -         self.setLayout(hlayout)
 
  
-     def set_label_text(self, string):
 
 -         """接收一个字符串参数并在主窗口显示"""
 
 -         self.label.setText(string)
 
 -         # 顺便测试更新my_string属性
 
 -         self.my_string = string
 
 -         print("当前my_string属性值为:%s" % self.my_string)
 
  
 
- class ChildWin(QWidget):
 
 -     """子窗口类"""
 
  
-     # 发射字符串的自定义信号
 
 -     xinhao = pyqtSignal(str)
 
  
-     def __init__(self):
 
 -         super().__init__()
 
 -         self.setWindowTitle("输入然后点击")
 
 -         self.resize(300, 100)
 
 -         # 设置子窗口打开后主窗口不可点击
 
 -         self.setWindowModality(Qt.ApplicationModal)
 
 -         self.pb1 = QPushButton("主窗显示文字")
 
 -         self.pb2 = QPushButton("主窗显示文字并关闭子窗")
 
 -         self.line_edit = QLineEdit()
 
 -         self.setup_ui()
 
 -         self.connect_signal_slot()
 
  
-     def connect_signal_slot(self):
 
 -         self.pb1.clicked.connect(self.fashezifu)
 
 -         self.pb2.clicked.connect(self.fashezifu)
 
 -         self.pb2.clicked.connect(self.close)
 
 -         # 自定义信号xinhao连接主窗口的set_label_text方法
 
 -         self.xinhao.connect(main_win.set_label_text)
 
 -         # 主窗口的按钮点击信号连接子窗口的show方法
 
 -         main_win.pb.clicked.connect(self.show)
 
  
-     def setup_ui(self):
 
 -         """设置子窗口布局"""
 
 -         hlayout = QHBoxLayout()
 
 -         hlayout.addWidget(self.pb1)
 
 -         hlayout.addWidget(self.pb2)
 
 -         vlayout = QVBoxLayout()
 
 -         vlayout.addWidget(self.line_edit)
 
 -         vlayout.addLayout(hlayout)
 
 -         self.setLayout(vlayout)
 
  
-     def fashezifu(self):
 
 -         """发射xinhao信号,发射一个字符串"""
 
 -         self.xinhao.emit(self.line_edit.text())
 
  
 
- app = QApplication(sys.argv)
 
 - main_win = MainWin()
 
 - child_win = ChildWin()
 
 - sys.exit(app.exec_())
 
 
  复制代码 
 
 
 |   
 
 
 
 |