今天来聊一个很现实的问题,我们在写GUI窗口时,有时候经常需要用到图片,那如何来加载图片到窗口中呢? 其实前面也提到过一次,最常用的方法是用一个标签控件来显示图片;看显示效果如下:1)QPixmap( )类,用来加载一张图片对象,并返回图片对象;2)scaled( 宽,高) 类,接收一个pixmap对象,对图片其进行缩放;3)使用QLabel( ).setPixmap( )为标签设置图片;from PySide6.QtCore import Qtfrom PySide6.QtGui import QPixmapfrom PySide6.QtWidgets import QWidget, QApplication, QGridLayout, QLabel
class Win(QWidget): def __init__(self): super().__init__() # 设置窗口标题 self.setWindowTitle("加载图片") # 创建网格布局 self.main_layout = QGridLayout() # 把网格布局设置给主窗口 self.setLayout(self.main_layout) self.main_layout.setAlignment(Qt.AlignmentFlag.AlignTop) # 创建setup_01 实例方法 # 在实例方法中创建控件 self.setup_01()
def setup_01(self): # 创建一个标签 self.label_1 = QLabel("一、已知三角形∠A=50°,∠B=60°,∠C=70°,\n" " 且外接圆半径为10,求各边a,b,c长度?") self.label_1.setStyleSheet("font-size:17px;") self.label_1.setAlignment(Qt.AlignmentFlag.AlignTop) self.label_2 = QLabel() # 创建一个QPixmap对象加载图片 pix_map = QPixmap("./正弦定理.png") # 对图片进行缩放 scaled_pix_map = pix_map.scaled(270, 300) # 使用setPixmap()方法,给标签设置图片对象 self.label_2.setPixmap(scaled_pix_map) # 把标签1 添加到主网格布局 self.main_layout.addWidget(self.label_1, 0, 0) # 把标签2 添加到主网格布局 self.main_layout.addWidget(self.label_2, 0, 1, 1, 2)
if __name__ == "__main__": import sys app = QApplication(sys.argv) # 实例化一个对你win win = Win() # 显示实例化的对象 win.show() # 运行主程序 sys.exit(app.exec())
注:需要注意的是,在scaled(宽,高) 缩放图片时,最好是宽、高比与原始图片宽、高比保持一致,这样能避免,图片在缩放时失真。 加载图片,其实挺简单的, 没有太多复杂的东西,大家可以动手自己练习一下。