Почему в PyQt6 все нажатия обрабатываются три раза?
Нарисовал в Qt Designer себе GUI, сконвертировал через pyuic6 -o
.
В нем почему-то все нажатия кнопок, меню и т.п. срабатывают трижды.
Только что выпилил все что только можно, как из .ui
, так и из главного файла. Если это вдруг важно - запускаю через PyCharm, используются стандартные настройки и Python 3.10.
У меня есть кнопка pb_Start
, к которой connect
простая функция, делающая print("Hey, start is starting!")
, я жму кнопку, у меня в выводе появляется три строки "Hey, start is starting!"
подряд.
Обновлять PyQt6 пробовал. На циклы проверял, циклов нигде не вижу. В интернете искал, вроде подобного не нашел.
В чем может быть проблема?
Возможно ли ее решить без полного пересоздания всего?
Полный код моих файлов в настоящий момент. В этих файлах происходит троекратный вывод print()
для кнопки и пункта меню.
i_one_button.ui:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>502</width>
<height>180</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(254, 214, 188);</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="pb_Start">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(85, 170, 255);</string>
</property>
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>502</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
<property name="title">
<string>File</string>
</property>
<addaction name="mf_Open"/>
</widget>
<addaction name="menuFile"/>
</widget>
<action name="mf_Open">
<property name="text">
<string>Open</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>
После при помощи команды pyuic6 ui_one_button.ui -o ui_one_button.py
я преобразую его в файл ui_one_button.py
.
ui_one_button.py:
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(502, 180)
MainWindow.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
MainWindow.setStyleSheet("background-color: rgb(254, 214, 188);")
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.pb_Start = QtWidgets.QPushButton(parent=self.centralwidget)
self.pb_Start.setEnabled(True)
font = QtGui.QFont()
font.setPointSize(11)
self.pb_Start.setFont(font)
self.pb_Start.setStyleSheet("background-color: rgb(85, 170, 255);")
self.pb_Start.setObjectName("pb_Start")
self.gridLayout.addWidget(self.pb_Start, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 502, 21))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(parent=self.menubar)
self.menuFile.setObjectName("menuFile")
MainWindow.setMenuBar(self.menubar)
self.mf_Open = QtGui.QAction(parent=MainWindow)
self.mf_Open.setObjectName("mf_Open")
self.menuFile.addAction(self.mf_Open)
self.menubar.addAction(self.menuFile.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pb_Start.setText(_translate("MainWindow", "Start"))
self.menuFile.setTitle(_translate("MainWindow", "File"))
self.mf_Open.setText(_translate("MainWindow", "Open"))
main_one_button.py:
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QLineEdit
from ui_one_button import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.mf_Open.triggered.connect(self.on_mf_Open_triggered)
self.pb_Start.clicked.connect(self.on_pb_Start_clicked)
def on_mf_Open_triggered(self):
print("Hey, open is opening!")
def on_pb_Start_clicked(self):
print("Hey, start is starting!")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
И после однократного нажатия на кнопку "Старт", в выводе появляется:
Hey, start is starting!
Hey, start is starting!
Hey, start is starting!