如何在运行时更改工具栏中动作的图标?
How to change the icon of an action in the toolbar at runtime?
我想在点击工具栏时更改 QAction 的图标。
我在C++中看到过同样的问题,但我很难理解其他语言。 (On Qt, how to change the icon of an action in the toolbar at runtime?)
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.PausePlay = QAction(QIcon('Play.png'), 'Play')
self.PausePlay.setCheckable(True)
self.PausePlay.triggered[bool].connect(self.Playing)
self.toolbar = self.addToolBar('tb')
self.toolbar.addAction(self.PausePlay)
self.setGeometry(300, 300, 300, 300)
self.show()
def Playing(self, active):
if active:
# setting new icon
else:
# setting new icon
if __name__ == '__main__':
app = QApplication(sys.argv)
MWindow = MainWindow()
sys.exit(app.exec_())
如其他答案所示,没有必要使用 QToolButton。在这种情况下,您应该只获取 QAction 并设置一个新图标
def Playing(self, active):
self.PausePlay.setIcon(QIcon("icon1.png") if active else QIcon("icon2.png"))
我想在点击工具栏时更改 QAction 的图标。
我在C++中看到过同样的问题,但我很难理解其他语言。 (On Qt, how to change the icon of an action in the toolbar at runtime?)
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.PausePlay = QAction(QIcon('Play.png'), 'Play')
self.PausePlay.setCheckable(True)
self.PausePlay.triggered[bool].connect(self.Playing)
self.toolbar = self.addToolBar('tb')
self.toolbar.addAction(self.PausePlay)
self.setGeometry(300, 300, 300, 300)
self.show()
def Playing(self, active):
if active:
# setting new icon
else:
# setting new icon
if __name__ == '__main__':
app = QApplication(sys.argv)
MWindow = MainWindow()
sys.exit(app.exec_())
如其他答案所示,没有必要使用 QToolButton。在这种情况下,您应该只获取 QAction 并设置一个新图标
def Playing(self, active):
self.PausePlay.setIcon(QIcon("icon1.png") if active else QIcon("icon2.png"))