PyQt5 TableWidget создает нежелательную строку - PullRequest
0 голосов
/ 25 апреля 2020

Я работаю над проектом python, который можно подключить к файлу базы данных sqlite3, а также получить и обновить базу данных. Для GUI я использую конструктор PyQT5. Используя конструктор Qt, я создал таблицу, которая может отображать данные, извлеченные из файла базы данных.

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

Это изображение пользовательского интерфейса

Я написал код, который создает новый row и устанавливает эту вновь созданную строку в качестве первого аргумента self.tableWidget.setItem(), чтобы каждый раз, когда новый элемент отображался в пользовательском интерфейсе, так что все элементы составляли список.

Но здесь возникает проблема. Если я введу неправильный номер элемента, строка все равно будет создана, но, поскольку для этого номера элемента нет элемента, строка останется пустой. И затем, если я введу правильный номер элемента, информация об элементе отобразится в следующей строке, оставив после себя ужасную пустую строку. вот так

Фрагмент кода:

def load_data(self):

    self.mycursor.execute('SELECT *FROM GOODS WHERE ITEM_NO=:itm_num',{'itm_num':int(self.text)})
    result = self.mycursor.fetchall()

    try:

        numRows = self.tableWidget.rowCount()
        self.tableWidget.insertRow(numRows)
        print(numRows)

        for column_number in range(4):
            self.data=result[0]               
            self.tableWidget.setItem(numRows,column_number,QtWidgets.QTableWidgetItem(str(self.data[column_number])))
            print(numRows)
    except:
            print(sys.exc_info()[0])

    finally:
        self.connection.close()  

Как мне остановить создание новой строки, если заданный номер элемента неверен?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...