Моя цель - обновить QTableQidget при добавлении новых контактов. У меня нет проблем с добавлением контактов или их в QTableWidget. Моя проблема в том, что мне нужно выйти из программы, а затем снова запустить ее, чтобы увидеть новые контакты. Является ли это способом обновления или обновления QTableWidget, чтобы показывать новые контакты, когда они добавляются в базу данных, не выходя из программы. Я попробовал update() и перерисовал, и ничего не изменилось.Как обновить QTableWidget?
class BrowseContacts(QtGui.QWidget):
#Display New Contacts Widget
def __init__(self):
super(BrowseContacts, self).__init__()
self.initUI()
self.contactsData()
#User Interface
def initUI(self):
self.new_layout = QtGui.QGridLayout()
self.contactsTableWidget = QtGui.QTableWidget()
self.contactsTableWidget.setColumnCount(10)
self.contacts_label = ['First Name', 'Last Name', 'Home Phone', 'Cell Phone', 'Business Name', 'Email Address', 'Address', 'City', 'State', 'Zip Code']
self.contactsTableWidget.setHorizontalHeaderLabels(self.contacts_label)
self.contactsTableWidget.setSortingEnabled(True)
self.new_layout.addWidget(self.contactsTableWidget)
self.setLayout(self.new_layout)
self.setStyleSheet('QTableWidget::item {background-color: #ffffff; color: #000000}' 'QTableWidget::item:selected {background-color: #3aa8ad; color: #ffffff;}')
def contactsData(self):
#Connect to Database
connection = sqlite3.connect('contacts.db')
cur = connection.cursor()
rowcount = cur.execute('''SELECT COUNT(*) FROM contacts''').fetchone()[0]
self.contactsTableWidget.setRowCount(rowcount)
cur.execute('''SELECT * FROM contacts''')
for row, contacts in enumerate(cur):
for column, contact in enumerate(contacts):
self.contactsTableWidget.setItem(row, column, QtGui.QTableWidgetItem(str(contact)))
cur.close()
connection.commit()
connection.close()
Спасибо
Не похоже, что-то не хватает. Попробуйте добавить некоторые отпечатки, чтобы убедиться, что функция действительно работает, и количество строк данных действительно изменяется. – Photon
Спасибо. Можете ли вы дать мне подсказку о том, как я это делаю. Что я распечатываю и где бы я поместил функцию печати. Извините, если это глупый вопрос. Я немного смущен. – irunintotrees
перед линией 'self.contactsTableWidget.setRowCount (rowcount)' добавить что-то вроде 'print 'Установка rowcount в {}". Format (rowcount) '. Он покажет, что функция вызывается и устанавливает новое количество строк. Если вы не видите печать или номер не изменился, вы поймете, что проблема в другом месте. Надеюсь, это будет нечто подобное. – Photon