Аргументы методов класса
Есть код:
class ApplicationMain(QtWidgets.QMainWindow, ClientApp.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.cancel.clicked.connect(self.appExit)
self.select.clicked.connect(self.selectModFolder)
self.selectGame.clicked.connect(self.selectGameFolder)
self.modsfile.itemDoubleClicked.connect(self.moveMods(1))
def moveMods(self, fromMethod):
a = self.modsfile.currentRow()
directory = self.urlMods.text()
i = os.listdir(directory)
i.reverse()
if fromMethod == 1:
#Что-то
Я хочу чтобы при выполнении вот этого:
self.modsfile.itemDoubleClicked.connect(self.moveMods(0))
Вызывался метод с аргументом fromMethod = 1, но выскакивает ошибка, по причине количества aргументов. Как можно исправить?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Пожалуйста, всегда предоставляйте минимально-воспроизводимый пример, который демонстрирует проблему.
void QListWidget::itemDoubleClicked(QListWidgetItem *item) [signal]
Этот сигнал испускается указанным элементом/item при двойном щелчке кнопкой мыши на элементе/iteme в виджете.
Больше https://doc.qt.io/qt-5/qlistwidget.html#itemDoubleClicked
Т.е. этот сигнал по умолчанию передает item, если вы еще что-то хотите передать, то вам нужна lambda
Попробуйте так:
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.Qt import *
class ApplicationMain(QtWidgets.QMainWindow): #, ClientApp.Ui_MainWindow):
def __init__(self):
super().__init__()
# self.setupUi(self)
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
# self.cancel.clicked.connect(self.appExit)
# self.select.clicked.connect(self.selectModFolder)
# self.selectGame.clicked.connect(self.selectGameFolder)
self.modsfile = QListWidget()
self.modsfile.addItems(['item 1', 'item 2', 'item 3', 'item 4'])
self.modsfile.itemDoubleClicked.connect( # +++
lambda item, fromMethod=1: self.moveMods(item, fromMethod)) # +++
self.layout = QGridLayout(self.centralWidget)
self.layout.addWidget(self.modsfile, 0, 0, 1, 1)
def moveMods(self, item, fromMethod): # +++
print(f'item.text = {item.text()}') #
a = self.modsfile.currentRow()
# directory = self.urlMods.text()
# i = os.listdir(directory)
# i.reverse()
if fromMethod == 1:
#Что-то
print(f'fromMethod = {fromMethod} --> currentRow = {a}') #
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ApplicationMain()
window.show()
sys.exit(app.exec_())
