我有一个奇怪的问题,希望有人能为我清除它
import os
from os import path
import sys
import pathlib
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget,
QWizard, QWizardPage, QLineEdit, \
QTabWidget, QApplication,
QTextEdit,QToolTip,QPushButton,QMessageBox
from PyQt5.QtCore import QSize,pyqtSlot,pyqtProperty
from PyQt5.QtGui import QFont
from PyQt5.uic import loadUiType
app = QApplication(sys.argv)
if getattr(sys, 'frozen', False):
# we are running in a bundle
installPath = sys._MEIPASS
print('we are running in a bundle')
else:
# we are running in a normal Python environment
installPath = os.path.dirname(os.path.abspath(__file__))
print('we are running in a normal Python environment')
UI_File, _ = loadUiType(path.join(path.dirname(__file__), 'test.ui'))
class MainAPP(QTabWidget, UI_File):
def __init__(self, parent=None):
super(MainAPP, self).__init__(parent)
self.setupUi(self)
self.handle_buttons()
def handle_buttons(self):
self.pushButton.clicked.connect(self.test_2)
def test_2(self):
for i in range(10):
self.listWidget.addItem(str('lklk'))
self.listWidget.itemClicked.connect(self.test)
def test(self):
for i in range(10):
self.listWidget_2.addItem(str('DDD'))
self.listWidget_2.itemClicked.connect(self.test_3)
def test_3(self):
print ('hi')
def main():
app = QApplication(sys.argv)
main = MainAPP()
main.show()
app.exec_()
if __name__ == "__main__":
main()
所以基本上,我有一个按钮,如果我点击它会在listWidget上显示一些数据,如果我点击listWidget中的任何项目,它将在ListWidget_2上显示其他数据然后如果我点击List_widget_2中的项目然后它应该打印('嗨')
问题是,如果我在ListWidget中多次单击然后单击ListWidget_2中的项目,我收到多个('嗨),它将根据我点击的点击次数显示('嗨') Listwidget
任何想法可能是什么问题
答案 0 :(得分:0)
您只需要在信号和插槽之间建立一次连接。目前,每次单击第一个列表小部件中的项目时,您都会进行其他连接,这会导致您的方法打印“hi”,对您所做的每个连接执行一次。
要解决此问题,请在test_2
方法或__init__
方法