PyQt5 — сигнал наведения для QPushButton, созданный с помощью Qt DesignerPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 PyQt5 — сигнал наведения для QPushButton, созданный с помощью Qt Designer

Сообщение Anonymous »

Я только что создал свое первое приложение PyQt, используемое для хранения личных данных.
В диалоговом окне «Новая запись» есть кнопка, которая при нажатии заполняет QLineEdits значениями по умолчанию.
Я хотел бы реализовать функцию, чтобы при наведении курсора мыши на эту кнопку по умолчанию вы получали предварительный просмотр (вероятно, через setPlaceholderText) того, что будет установлено для QLineEdits.

После поиска решения я наткнулся на это решение: Как перехватить сигнал наведения и отпускания мыши PyQt5
для подкласса PushButton и переопределения EnterEvent и LeaveEvent.

Однако я создал свой графический интерфейс с помощью Qt Designer и немного не понимаю, как я могу применить это решение, поскольку QPushButton создается внутри файла .ui дизайнера, где я не могу вносить изменения...

Вот фрагмент файла .ui при преобразовании в .py с pyuic5

Код: Выделить всё

class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")

self.pushButton_contact_defaut = QtWidgets.QPushButton(self.groupBox_client)
self.pushButton_contact_defaut.setGeometry(QtCore.QRect(80, 130, 165, 22))
self.pushButton_contact_defaut.setMouseTracking(True)
self.pushButton_contact_defaut.setAutoDefault(False)
self.pushButton_contact_defaut.setObjectName("pushButton_contact_defaut")
Как я уже сказал, я не могу вносить там изменения, поскольку код сбрасывается каждый раз, когда я вношу изменения в файл пользовательского интерфейса...

А вот также выдержка из моего основного файла Python, где я «обрабатываю» все соединения и логику.
Я явно не слишком знаком с Python и PyQt (или чем-то связанным с ними). к программированию на самом деле!)
Есть ли способ «переопределить» кнопку PushButton изнутри моего кода и является ли это лучшим способом решения проблемы, или я что-то еще упускаю?

Код: Выделить всё

class NewEntry(NE_Base, NE_Ui):
def __init__(self):
super().__init__()
QDialog.__init__(self, parent=main_window)
self.ui = NE_Ui()
self.ui.setupUi(self)
self.setWindowModality(0)
self.ui.pushButton_contact_defaut.clicked.connect(self.contact_defaut)
Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ: Основываясь на ответе musicamante, я заставил его работать нормально для моего app, где у меня есть 2 кнопки, которые «заполняют» разные строкиEdit, выполняя следующие действия.

Я применил .installEventFilter(self) к обеим кнопкам pushButton и добавил:

Код: Выделить всё

 def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.Enter and source == self.ui.pushButton_contact_defaut:
self.ui.contact_text.setPlaceholderText(self.contact_base)
self.ui.cell_text.setPlaceholderText(self.cell)
self.ui.email_text.setPlaceholderText(self.courriel)

if event.type() == QtCore.QEvent.Enter and source == self.ui.pushButton_copy_adress:
self.ui.street_text.setPlaceholderText(self.street)
self.ui.city_text.setPlaceholderText(self.city)
self.ui.postal_text.setPlaceholderText(self.postal)

elif event.type() == QtCore.QEvent.Leave:
self.ui.contact_text.setPlaceholderText('')
self.ui.cell_text.setPlaceholderText('')
self.ui.email_text.setPlaceholderText('')
self.ui.street_text.setPlaceholderText('')
self.ui.city_text.setPlaceholderText('')
self.ui.postal_text.setPlaceholderText('')

return super().eventFilter(source, event)
Кажется немного неудобным обрабатывать несколько кнопок таким образом, и, надеюсь, кто-нибудь сможет просветить меня и по этой проблеме, но тем временем это работает!

Подробнее здесь: https://stackoverflow.com/questions/603 ... t-designer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»