При нажатии на QRadioButton меняется фото
Пытаюсь сделать, чтобы при нажатии на QRadioButton менялись фотографии. Использую Qt Desinger Понимаю, что у меня он просто не видит кнопки, помогите пожалуйста
ReadyTemplates.py
import sys
from PyQt5.QtWidgets import (QApplication, QDialog, QMainWindow, QMessageBox)
from PyQt5.uic import loadUi
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
from ui_ReadyTemplates import Ui_ReadyTemplates
class ReadyTemplates(QMainWindow, Ui_ReadyTemplates):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.ui = Ui_ReadyTemplates()
self.ui.setupUi(self)
radiobutton = self.QRadioButton("radioButton")
radiobutton.image = "1.jpg"
radiobutton.toggled.connect(self.onClicked)
radiobutton = QRadioButton("radioButton_2")
radiobutton.image = "2.jpg"
radiobutton.toggled.connect(self.onClicked)
radiobutton = QRadioButton("radioButton_3")
radiobutton.image = "3.jpg"
radiobutton.toggled.connect(self.onClicked)
def onClicked(self):
radioButton = self.sender()
if radioButton.isChecked():
self.ui.label_2.setPixmap(QPixmap(u"{}".format(radiobutton.image)))
if __name__ == "__main__":
app = QApplication(sys.argv)
win = ReadyTemplates()
win.show()
sys.exit(app.exec_())
Ui_ReadyTemplates.py
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
class Ui_ReadyTemplates(object):
def setupUi(self, ReadyTemplates):
if not ReadyTemplates.objectName():
ReadyTemplates.setObjectName(u"ReadyTemplates")
ReadyTemplates.resize(904, 689)
icon = QIcon()
icon.addFile(u"../JLQOy.png", QSize(), QIcon.Normal, QIcon.Off)
ReadyTemplates.setWindowIcon(icon)
self.action = QAction(ReadyTemplates)
self.action.setObjectName(u"action")
self.action_2 = QAction(ReadyTemplates)
self.action_2.setObjectName(u"action_2")
self.centralwidget = QWidget(ReadyTemplates)
self.centralwidget.setObjectName(u"centralwidget")
self.label_2 = QLabel(self.centralwidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setGeometry(QRect(10, 10, 561, 661))
self.label_2.setTextFormat(Qt.MarkdownText)
self.label_2.setScaledContents(True)
self.label_2.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter)
self.label_2.setMargin(-3)
self.label_2.setOpenExternalLinks(False)
self.verticalLayoutWidget = QWidget(self.centralwidget)
self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
self.verticalLayoutWidget.setGeometry(QRect(700, 90, 160, 80))
self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.radioButton = QRadioButton(self.verticalLayoutWidget)
self.radioButton.setObjectName(u"radioButton")
self.verticalLayout.addWidget(self.radioButton)
self.radioButton_2 = QRadioButton(self.verticalLayoutWidget)
self.radioButton_2.setObjectName(u"radioButton_2")
self.verticalLayout.addWidget(self.radioButton_2)
self.radioButton_3 = QRadioButton(self.verticalLayoutWidget)
self.radioButton_3.setObjectName(u"radioButton_3")
self.verticalLayout.addWidget(self.radioButton_3)
ReadyTemplates.setCentralWidget(self.centralwidget)
self.retranslateUi(ReadyTemplates)
QMetaObject.connectSlotsByName(ReadyTemplates)
# setupUi
def retranslateUi(self, ReadyTemplates):
ReadyTemplates.setWindowTitle(QCoreApplication.translate("ReadyTemplates", u"\u041e\u041e\u041e \"\u0422\u041a\u0420\" - \u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b", None))
self.action.setText(QCoreApplication.translate("ReadyTemplates", u"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u043e\u0442\u043e", None))
self.action_2.setText(QCoreApplication.translate("ReadyTemplates", u"\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f", None))
self.label_2.setText("")
self.radioButton.setText(QCoreApplication.translate("ReadyTemplates", u"\u0425", None))
self.radioButton_2.setText(QCoreApplication.translate("ReadyTemplates", u"Y", None))
self.radioButton_3.setText(QCoreApplication.translate("ReadyTemplates", u"Z", None))
# retranslateUi
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Импорты поменяйте на PySide6, если надо и попробуйте
from PyQt5.Qt import *
#from ui_ReadyTemplates import Ui_ReadyTemplates
class Ui_ReadyTemplates(object):
def setupUi(self, ReadyTemplates):
if not ReadyTemplates.objectName():
ReadyTemplates.setObjectName(u"ReadyTemplates")
ReadyTemplates.resize(904, 689)
icon = QIcon()
icon.addFile(u"../JLQOy.png", QSize(), QIcon.Normal, QIcon.Off)
ReadyTemplates.setWindowIcon(icon)
self.action = QAction(ReadyTemplates)
self.action.setObjectName(u"action")
self.action_2 = QAction(ReadyTemplates)
self.action_2.setObjectName(u"action_2")
self.centralwidget = QWidget(ReadyTemplates)
self.centralwidget.setObjectName(u"centralwidget")
self.label_2 = QLabel(self.centralwidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setGeometry(QRect(10, 10, 661, 661))
self.label_2.setTextFormat(Qt.MarkdownText)
self.label_2.setScaledContents(True)
self.label_2.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter)
self.label_2.setMargin(-3)
self.label_2.setOpenExternalLinks(False)
self.verticalLayoutWidget = QWidget(self.centralwidget)
self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
self.verticalLayoutWidget.setGeometry(QRect(700, 90, 160, 80))
self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.radioButton = QRadioButton(self.verticalLayoutWidget)
self.radioButton.setObjectName(u"radioButton")
self.verticalLayout.addWidget(self.radioButton)
self.radioButton_2 = QRadioButton(self.verticalLayoutWidget)
self.radioButton_2.setObjectName(u"radioButton_2")
self.verticalLayout.addWidget(self.radioButton_2)
self.radioButton_3 = QRadioButton(self.verticalLayoutWidget)
self.radioButton_3.setObjectName(u"radioButton_3")
self.verticalLayout.addWidget(self.radioButton_3)
ReadyTemplates.setCentralWidget(self.centralwidget)
self.retranslateUi(ReadyTemplates)
QMetaObject.connectSlotsByName(ReadyTemplates)
# setupUi
def retranslateUi(self, ReadyTemplates):
ReadyTemplates.setWindowTitle(QCoreApplication.translate("ReadyTemplates", u"\u041e\u041e\u041e \"\u0422\u041a\u0420\" - \u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b", None))
self.action.setText(QCoreApplication.translate("ReadyTemplates", u"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u043e\u0442\u043e", None))
self.action_2.setText(QCoreApplication.translate("ReadyTemplates", u"\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f", None))
self.label_2.setText("")
self.radioButton.setText(QCoreApplication.translate("ReadyTemplates", u"\u0425", None))
self.radioButton_2.setText(QCoreApplication.translate("ReadyTemplates", u"Y", None))
self.radioButton_3.setText(QCoreApplication.translate("ReadyTemplates", u"Z", None))
# retranslateUi
class ReadyTemplates(QMainWindow, Ui_ReadyTemplates):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.label_2.setPixmap(QPixmap('Ok.png'))
self.radioButton.toggled.connect(self.onClicked)
self.radioButton_2.toggled.connect(self.onClicked)
self.radioButton_3.toggled.connect(self.onClicked)
def onClicked(self):
senderRadioButton = self.sender()
if senderRadioButton.isChecked():
# self.ui.label_2.setPixmap(QPixmap(u"{}".format(radiobutton.image)))
if senderRadioButton.text() == "Y":
self.label_2.setPixmap(QPixmap('im.png'))
elif senderRadioButton.text() == "Z":
self.label_2.setPixmap(QPixmap('lena.jpg'))
else :
self.label_2.setPixmap(QPixmap('Ok.png'))
if __name__ == "__main__":
app = QApplication(sys.argv)
win = ReadyTemplates()
win.show()
sys.exit(app.exec_())
