鱼C论坛

 找回密码
 立即注册
查看: 1520|回复: 3

[已解决]pyside6图标问题

[复制链接]
发表于 2023-11-28 11:35:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
PYTHON在pyside6中如何获得一个按钮的ICON图标的路径呢?
如下代码:
from PySide6.QtGui import QIcon
from PySide6.QtWidgets import QApplication,QPushButton,QVBoxLayout,QWidget

class Window(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.icon = QIcon('我需要获得这个图片的路径.png')
        self.button2 = QPushButton(icon=self.icon, parent=self)
        self.button2.setFixedSize(QSize(100, 60))
        self.button2.setIconSize(QSize(40, 40))

        self.button2.clicked.connect(self.icon_changed)

        layout = QVBoxLayout()
        layout.addWidget(self.button2)
        self.setLayout(layout)

    def icon_changed(self):
        """打印图标完整路径"""
        pass


app = QApplication([])
window = Window()
window.show()
sys.exit(app.exec())
最佳答案
2023-11-28 11:40:08
yczyh 发表于 2023-11-28 11:39
你给的不是我想知道的方法,
也就是说没有方法获得按 ...

对不起,我之前理解错了你的问题。确实,PySide6中没有提供直接获得按钮图标路径的方法。如果你需要在程序运行过程中获取按钮图标的路径,最好的方法是在创建按钮时,将图标的文件路径存储在按钮对象的属性中,以便后续使用。

以下是修改后的代码示例:
from PySide6.QtCore import QSizefrom PySide6.QtGui import QIconfrom PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidgetclass Window(QWidget):    def __init__(self, parent=None):        super().__init__(parent)        self.button2 = QPushButton(parent=self)  # 创建按钮对象        self.button2.setProperty('icon_path', 'icon.png')  # 存储图标路径为按钮的属性        self.icon = QIcon(self.button2.property('icon_path'))  # 从按钮的属性中获取图标路径        self.button2.setIcon(self.icon)  # 设置按钮图标        self.button2.setFixedSize(QSize(100, 60))        self.button2.setIconSize(QSize(40, 40))        self.button2.clicked.connect(self.icon_changed)                layout = QVBoxLayout()        layout.addWidget(self.button2)        self.setLayout(layout)    def icon_changed(self):        """打印图标完整路径"""        icon_path = self.button2.property('icon_path')        print(icon_path)app = QApplication()window = Window()window.show()app.exec()
在上面的代码中,我们使用`setProperty()`方法将图标路径保存在按钮的属性中,并使用`property()`方法从按钮的属性中获取图标路径。通过这种方式,你可以在按钮点击事件或其他需要时,获取按钮的图标路径。

希望这次能解决你的问题。如果还有其他疑问,请随时提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-28 11:35:38 | 显示全部楼层
在PySide6中获取按钮的图标路径并不是直接提供的方法。但你可以通过QIcon对象的pixmap()方法获取图标的像素图并保存到本地文件,然后再获得这个文件的路径。

以下是修改后的代码示例:
from PySide6.QtCore import QSizefrom PySide6.QtGui import QIconfrom PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidgetclass Window(QWidget):    def __init__(self, parent=None):        super().__init__(parent)        self.icon_path = 'icon.png'  # 图标保存路径        self.icon = QIcon(self.icon_path)        self.button2 = QPushButton(icon=self.icon, parent=self)        self.button2.setFixedSize(QSize(100, 60))        self.button2.setIconSize(QSize(40, 40))        self.button2.clicked.connect(self.icon_changed)        layout = QVBoxLayout()        layout.addWidget(self.button2)        self.setLayout(layout)    def icon_changed(self):        """打印图标完整路径"""        print(self.icon_path)app = QApplication()window = Window()window.show()app.exec()
在上面的示例中,我们添加了一个`icon_path`变量来保存图标的路径。在初始化按钮时,我们传入了`self.icon_path`作为图标的路径参数。

在`icon_changed`方法中,我们直接打印了图标的完整路径`self.icon_path`。这样就实现了获取按钮图标的路径了。

注意:在使用`icon_changed`方法之前,确保点击过按钮,以便在图标已经加载后获取图标的路径。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-28 11:39:52 | 显示全部楼层
FishC_GPT 发表于 2023-11-28 11:35
在PySide6中获取按钮的图标路径并不是直接提供的方法。但你可以通过QIcon对象的pixmap()方法获取图标的像素 ...

你给的不是我想知道的方法,
也就是说没有方法获得按钮的图标路径
只能自己写代码的时候保存一个变量了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-28 11:40:08 | 显示全部楼层    本楼为最佳答案   
yczyh 发表于 2023-11-28 11:39
你给的不是我想知道的方法,
也就是说没有方法获得按 ...

对不起,我之前理解错了你的问题。确实,PySide6中没有提供直接获得按钮图标路径的方法。如果你需要在程序运行过程中获取按钮图标的路径,最好的方法是在创建按钮时,将图标的文件路径存储在按钮对象的属性中,以便后续使用。

以下是修改后的代码示例:
from PySide6.QtCore import QSizefrom PySide6.QtGui import QIconfrom PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidgetclass Window(QWidget):    def __init__(self, parent=None):        super().__init__(parent)        self.button2 = QPushButton(parent=self)  # 创建按钮对象        self.button2.setProperty('icon_path', 'icon.png')  # 存储图标路径为按钮的属性        self.icon = QIcon(self.button2.property('icon_path'))  # 从按钮的属性中获取图标路径        self.button2.setIcon(self.icon)  # 设置按钮图标        self.button2.setFixedSize(QSize(100, 60))        self.button2.setIconSize(QSize(40, 40))        self.button2.clicked.connect(self.icon_changed)                layout = QVBoxLayout()        layout.addWidget(self.button2)        self.setLayout(layout)    def icon_changed(self):        """打印图标完整路径"""        icon_path = self.button2.property('icon_path')        print(icon_path)app = QApplication()window = Window()window.show()app.exec()
在上面的代码中,我们使用`setProperty()`方法将图标路径保存在按钮的属性中,并使用`property()`方法从按钮的属性中获取图标路径。通过这种方式,你可以在按钮点击事件或其他需要时,获取按钮的图标路径。

希望这次能解决你的问题。如果还有其他疑问,请随时提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 17:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表