Решение:
Моя грешка: Файлът, в който се добавя иконата към бутона, се използва чрез функцията „placeholder“ от QtDesigner. Основната програма, намираща се в друга папка, търси иконата в собствената си папка, а не в папката от "импортирания" файл. Така че просто трябва да добавите пътя към иконата:
dirpath = os.path.dirname(os.path.abspath(__file__))
icon1_path = os.path.join(dirpath,"arrow_down.ico")
icon = QtGui.QPixmap(icon1_path)
Искам да създам Qpushbutton с икона вместо текст:
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("arrow_down.png"))
self.ui.pb_down.setIcon(icon)
Но това не работи. Нито това работи:
self.ui.pb_down.setIcon(QtGui.QIcon("arrow_down.png"))
Няма съобщение за грешка, иконата просто не се появява.
Ако добавя иконата чрез Qt Designer, иконата се показва в самия Qt Desiger, но при стартиране на програмата иконата отново изчезва. Някой знае ли какво става?
Използвам python 2.7 и Windows 7
Редактиране: Използвайки код на @Chris Aung, получавам бутон с икона.
button = QtGui.QPushButton()
self.setCentralWidget(button)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("arrow_down.ico"))
print button.icon().isNull() #Returns true if the icon is empty; otherwise returns false.
#output = False
Но ако използвам точно този код в GUI, той просто не добавя иконата.
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("arrow_down.ico"))
self.ui.pb_down.setIcon(icon)
print self.ui.pb_down.icon().isNull()
# output = True
Нямам идея къде е проблема.