Как передать кнопку PyQt5
Есть две кнопки(к1, к2) и одна функция (func).
Содержимое функции :
self.название_кнопки.setStyleSheet("""
background-color: blue;
border-style: outset;
border-width: 2px;
border-radius: 10px;
border-color: beige;
""")
Можно ли сделать так, чтобы допустим если я нажал к1, то вызвалась эта функция, и а месте названия кнопки было к1?
UPD
К сожалению работающего варианта нет, поэтому я здесь, но вот примерно та конструкция о которой я говорю :
class Main_Wid(QtWidgets.QMainWindow, TextEditorDes.Ui_Form) :
def __init__(self) :
super().__init__()
self.setupUi(self)
self.closeButton.pressed.connect(self.pressed)
self.openButton.pressed.connect(self.pressed)
def pressed(self, button) :
self.кнопка_которую_передают.setStyleSheet("""
background-color: blue;
border-style: outset;
border-width: 2px;
border-radius: 10px;
border-color: beige;
""")
TextEditorDes.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(600, 460)
self.saveButton = QtWidgets.QPushButton(Form)
self.saveButton.setGeometry(QtCore.QRect(10, 430, 75, 23))
self.saveButton.setCheckable(False)
self.saveButton.setChecked(False)
self.saveButton.setDefault(False)
self.saveButton.setObjectName("saveButton")
self.openButton = QtWidgets.QPushButton(Form)
self.openButton.setGeometry(QtCore.QRect(90, 430, 75, 23))
self.openButton.setObjectName("openButton")
self.MainTextEdit = QtWidgets.QTextEdit(Form)
self.MainTextEdit.setGeometry(QtCore.QRect(10, 10, 580, 410))
self.MainTextEdit.setObjectName("MainTextEdit")
self.FileName = QtWidgets.QLabel(Form)
self.FileName.setGeometry(QtCore.QRect(400, 430, 101, 20))
self.FileName.setObjectName("FileName")
self.fileInfoButton = QtWidgets.QPushButton(Form)
self.fileInfoButton.setGeometry(QtCore.QRect(170, 430, 75, 23))
self.fileInfoButton.setObjectName("fileInfoButton")
self.closeButton = QtWidgets.QPushButton(Form)
self.closeButton.setGeometry(QtCore.QRect(250, 430, 75, 23))
self.closeButton.setObjectName("closeButton")
self.isSavedLineEdit = QtWidgets.QLineEdit(Form)
self.isSavedLineEdit.setGeometry(QtCore.QRect(330, 432, 51, 20))
self.isSavedLineEdit.setReadOnly(True)
self.isSavedLineEdit.setObjectName("isSavedLineEdit")
self.themeButton = QtWidgets.QPushButton(Form)
self.themeButton.setGeometry(QtCore.QRect(516, 430, 75, 23))
self.themeButton.setObjectName("themeButton")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Editor"))
self.saveButton.setText(_translate("Form", "Save"))
self.openButton.setText(_translate("Form", "Open"))
self.FileName.setText(_translate("Form", "None"))
self.fileInfoButton.setText(_translate("Form", "File info"))
self.closeButton.setText(_translate("Form", "Close file"))
self.isSavedLineEdit.setText(_translate("Form", " No saved"))
self.themeButton.setText(_translate("Form", "Dark"))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
- Скрытая ошибка заключается в том, что вы не правильно выбираете класс родителя, когда создаете форму в
Qt Designer
- По сути вопроса:
QObject *QObject::sender()
Возвращает указатель на объект, который отправил сигнал.
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
#from TextEditorDes import Ui_Form
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(600, 460)
self.saveButton = QtWidgets.QPushButton(Form)
self.saveButton.setGeometry(QtCore.QRect(10, 430, 75, 23))
self.saveButton.setCheckable(False)
self.saveButton.setChecked(False)
self.saveButton.setDefault(False)
self.saveButton.setObjectName("saveButton")
self.openButton = QtWidgets.QPushButton(Form)
self.openButton.setGeometry(QtCore.QRect(90, 430, 75, 23))
self.openButton.setObjectName("openButton")
self.MainTextEdit = QtWidgets.QTextEdit(Form)
self.MainTextEdit.setGeometry(QtCore.QRect(10, 10, 580, 410))
self.MainTextEdit.setObjectName("MainTextEdit")
self.FileName = QtWidgets.QLabel(Form)
self.FileName.setGeometry(QtCore.QRect(400, 430, 101, 20))
self.FileName.setObjectName("FileName")
self.fileInfoButton = QtWidgets.QPushButton(Form)
self.fileInfoButton.setGeometry(QtCore.QRect(170, 430, 75, 23))
self.fileInfoButton.setObjectName("fileInfoButton")
self.closeButton = QtWidgets.QPushButton(Form)
self.closeButton.setGeometry(QtCore.QRect(250, 430, 75, 23))
self.closeButton.setObjectName("closeButton")
self.isSavedLineEdit = QtWidgets.QLineEdit(Form)
self.isSavedLineEdit.setGeometry(QtCore.QRect(330, 432, 51, 20))
self.isSavedLineEdit.setReadOnly(True)
self.isSavedLineEdit.setObjectName("isSavedLineEdit")
self.themeButton = QtWidgets.QPushButton(Form)
self.themeButton.setGeometry(QtCore.QRect(516, 430, 75, 23))
self.themeButton.setObjectName("themeButton")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Editor"))
self.saveButton.setText(_translate("Form", "Save"))
self.openButton.setText(_translate("Form", "Open"))
self.FileName.setText(_translate("Form", "None"))
self.fileInfoButton.setText(_translate("Form", "File info"))
self.closeButton.setText(_translate("Form", "Close file"))
self.isSavedLineEdit.setText(_translate("Form", " No saved"))
self.themeButton.setText(_translate("Form", "Dark"))
#class Main_Wid(QtWidgets.QMainWindow, TextEditorDes.Ui_Form) : # QMainWindow <-> Ui_MainWindow
class Main_Wid(QtWidgets.QWidget, Ui_Form) : # QWidget <-> Ui_Form !!!!
def __init__(self):
super().__init__()
self.setupUi(self)
self.closeButton.pressed.connect(self.pressed_func)
self.openButton.pressed.connect(self.pressed_func)
# def pressed_func(self, button):
def pressed_func(self) :
sender = self.sender() # <---
# self.кнопка_которую_передают.setStyleSheet("""
sender.setStyleSheet("""
background-color: blue;
border-style: outset;
border-width: 2px;
border-radius: 10px;
border-color: beige;
""")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Main_Wid()
w.show()
sys.exit(app.exec_())

