Вызов метода с параметром передаваемой функции - PullRequest
0 голосов
/ 06 сентября 2018

В настоящее время я работаю над пользовательским интерфейсом, основанным на Qt, pyqt и Python в качестве моего языка. Я хотел бы знать, есть ли какой-нибудь способ, которым я могу определить метод, который я могу передать переменную, которая позже используется в вызове функции. В настоящее время я решаю это так:

def loader(self, filePath, id):
#firstTable, secondTable and thirdTable are three different Table Widgets in the UI
    if id == "1":
        tab = self.ui.firstTable
    elif id == "2":
        tab = self.ui.secondTable
    elif id == "3":
        tab = self.ui.thirdTable

    tab.clearContents()
    with open(filePath, "r", encoding="utf-8") as file:
        rowCount = tab.rowCount()
        columnCount = tab.columnCount()
        csvReader = csv.reader(file, delimiter=",", quotechar="'")
        for row in csvReader:
            if csvReader.line_num > rowCount:
                tab.insertRow(csvReader.line_num - 1)
            for i in range(0, columnCount):
                tab.setItem((csvReader.line_num - 1), i, QtWidgets.QTableWidgetItem(row[i]))
    tab.sortItems(1)

Я хочу решить это примерно так, но я просто не знаю, как это сделать, и не нашел никакого решения при исследовании этой проблемы:

def loader(self, filePath, widget):
#variabel widget would be the corresponding object name I want to adress, like firstTable, secondTable, thirdTable
#...
    self.ui.widget.clearContents()
#...
    self.ui.widget.rowCount()

Я надеюсь, что смогу правильно объяснить мою проблему, и кто-то может помочь мне с этим. Спасибо!

Редактировать: Вот как я сейчас вызываю загрузчик:

 self.loader("file.csv", "1")

1 Ответ

0 голосов
/ 06 сентября 2018

Если виджет является методом в некотором классе cl, вы можете вызвать loader следующим образом:

ld = cl.loader(filePath, cl.widget)

тогда, где вы используете его в загрузчике:

widget.clearcontents(self)

и т.д.

Помните, что метод - это просто функция с подразумеваемым первым параметром - ссылкой на класс.

...