|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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_())
复制代码
|
|