ekd*_*kdm 2 python python-3.x qicon qpushbutton pyqt5
我正在尝试将图标向右对齐并将文本放在 QPushButton 中,但我目前对结果不满意。我还希望图标完全位于 QPushButton 的右侧,而不是与文本居中。同样,我希望它能够与位于右侧或左侧的图标一起使用,同时能够选择按钮的宽度。你有解决方案吗 ?你能帮助我吗 ?这是我现在的代码:
\n\n# Les boutons du bas pour passer d\'une page \xc3\xa0 l\'autre\nbout_pag_charg_enr_phase_1 = QPushButton("Aller directement \xc3\xa0 la page de maintenance de la S\xc3\xa9quence")\nbout_pag_charg_enr_phase_1.setFixedWidth(406)\nbout_pag_charg_enr_phase_1.setIcon(QIcon(\'logo_png_apsc\'+os.sep+\'icone_3_fleches_droite_apsc_256x256.png\'))\nbout_pag_charg_enr_phase_1.setIconSize(QSize(16, 16))\nbout_pag_charg_enr_phase_1.setLayoutDirection(Qt.RightToLeft)\nbout_pag_charg_enr_phase_1.setStyleSheet("text-align: center; background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fdfbf7, stop: 1 #6190F2);border-style: solid;border-width: 2px;border-radius: 8px;border-color: #9BB7F0;padding: 3px")\nbout_pag_suivante_phase_1 = QPushButton("Page suivante")\nbout_pag_suivante_phase_1.setFixedWidth(120)\nbout_pag_suivante_phase_1.setIcon(QIcon(\'logo_png_apsc\'+os.sep+\'icone_2_fleches_droite_apsc_256x256.png\'))\nbout_pag_suivante_phase_1.setIconSize(QSize(16, 16))\nbout_pag_suivante_phase_1.setLayoutDirection(Qt.RightToLeft)\nbout_pag_suivante_phase_1.setStyleSheet("background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fdfbf7, stop: 1 #6190F2);border-style: solid;border-width: 2px;border-radius: 8px;border-color: #9BB7F0;padding: 3px")\nRun Code Online (Sandbox Code Playgroud)\n\n我得到什么:
\n\n\n\n我想要的是:
\n\n\n一个可能的解决方案是在顶部和右侧放置一个显示图标的 QLabel。
\n\nimport os\nfrom PyQt5 import QtCore, QtGui, QtWidgets\n\nclass PushButton(QtWidgets.QPushButton):\n def __init__(self, *args, **kwargs):\n super(PushButton, self).__init__(*args, **kwargs)\n self.setStyleSheet(\'\'\'background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fdfbf7, stop: 1 #6190F2);\n border-style: solid;border-width: 2px;\n border-radius: 8px;\n border-color: #9BB7F0;padding: 3px;\'\'\')\n\n icon = self.icon()\n icon_size = self.iconSize()\n # remove icon\n self.setIcon(QtGui.QIcon())\n label_icon = QtWidgets.QLabel()\n label_icon.setAttribute(QtCore.Qt.WA_TranslucentBackground)\n label_icon.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)\n lay = QtWidgets.QHBoxLayout(self)\n lay.setContentsMargins(0, 0, 0, 0)\n lay.addWidget(label_icon, alignment=QtCore.Qt.AlignRight)\n label_icon.setPixmap(icon.pixmap(icon_size))\n\nclass MyWindow(QtWidgets.QWidget):\n def __init__(self, parent=None):\n super(MyWindow, self).__init__(parent)\n\n icon = QtWidgets.QApplication.style().standardIcon(QtWidgets.QStyle.SP_ArrowRight)\n # icon = QtGui.QIcon(os.path.join(\'logo_png_apsc\', \'icone_3_fleches_droite_apsc_256x256.png\'))\n\n bout_pag_charg_enr_phase_1 = PushButton("Aller directement \xc3\xa0 la page de maintenance de la S\xc3\xa9quence",\n icon=icon, iconSize=QtCore.QSize(16, 16))\n bout_pag_charg_enr_phase_1.setFixedWidth(506)\n\n bout_pag_suivante_phase_1 = PushButton("Page suivante",\n icon=icon, iconSize=QtCore.QSize(16, 16))\n bout_pag_suivante_phase_1.setFixedWidth(140)\n\n lay = QtWidgets.QHBoxLayout(self)\n lay.addWidget(bout_pag_charg_enr_phase_1)\n lay.addWidget(bout_pag_suivante_phase_1) \n\nif __name__ == \'__main__\':\n import sys\n app = QtWidgets.QApplication(sys.argv)\n main = MyWindow()\n main.show()\n sys.exit(app.exec_())\nRun Code Online (Sandbox Code Playgroud)\n\n\n