📅  最后修改于: 2023-12-03 15:03:58.702000             🧑  作者: Mango
在PyQt5中,QSpinBox是一种常用的小部件,它允许用户通过增加或减少一个整数值来进行输入。然而,在某些情况下,需要将该小部件的几何图形保存下来,以便后续使用。本文将讨论如何实现这一目标。
我们可以将QSpinBox的几何图形保存为一个PNG或SVG格式的图像。为此,我们需要使用PyQt5.QtGui.QPixmap和PyQt5.QtSvg.QSvgGenerator。这两个类分别允许我们将小部件的几何图形渲染为像素和矢量图形格式。
下面是保存QSpinBox的几何图形的示例代码:
from PyQt5 import QtWidgets, QtGui, QtSvg
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.spin_box = QtWidgets.QSpinBox()
self.setCentralWidget(self.spin_box)
self.file_menu = self.menuBar().addMenu('&File')
self.save_as_action = QtWidgets.QAction('&Save As...', self)
self.save_as_action.setShortcut('Ctrl+S')
self.save_as_action.triggered.connect(self.save_as)
self.file_menu.addAction(self.save_as_action)
def save_as(self):
file_name, _ = QtWidgets.QFileDialog.getSaveFileName(
parent=self,
caption='Save As',
filter='PNG (*.png);;SVG (*.svg)')
if file_name:
if file_name.endswith('.png'):
pixmap = self.spin_box.grab()
pixmap.save(file_name)
elif file_name.endswith('.svg'):
generator = QtSvg.QSvgGenerator()
generator.setFileName(file_name)
generator.setSize(self.spin_box.size())
generator.setViewBox(QtCore.QRect(0, 0, self.spin_box.width(), self.spin_box.height()))
painter = QtGui.QPainter(generator)
self.spin_box.render(painter)
painter.end()
在上面的代码中,我们首先创建一个QSpinBox小部件并将其设置为主窗口的中央小部件。然后,我们添加一个“Save As”操作,该操作在触发时调用save_as()方法。该方法使用户选择要保存的文件的名称和格式,并在选择后将小部件的几何图形保存为PNG或SVG格式的图像。
在保存PNG格式的图像时,我们使用QSpinBox的grab()方法来获得小部件的像素图像,并使用QPixmap的save()方法将其保存为PNG格式的文件。
在保存SVG格式的图像时,我们首先创建一个QSvgGenerator对象,并将其文件名设置为我们要保存的文件名。然后,我们设置其大小为小部件的大小,并设置其视图框为小部件的大小。接下来,我们创建一个QPainter对象,并使用QSpinBox的render()方法渲染小部件的几何图形。最后,我们结束绘画并保存文件。
以上是如何保存PyQt5 QSpinBox几何图形的方法。我们可以使用PyQt5.QtGui.QPixmap和PyQt5.QtSvg.QSvgGenerator类将该小部件的几何图形保存为PNG或SVG格式的图像。