Простейший вывод данных в предпросмотр
Добавим в наш проект виджет ListWidget с именем viewPoints, в котором будем выводить содержимое Google таблицы и кнопку recvPoints, с надписью "Получить данные" которая будет вызывать функцию считывания данных из таблицы.
Осуществим простейший вывод данных в этот виджет

Полный код на данном этапе:
Осуществим простейший вывод данных в этот виджет

Полный код на данном этапе:
import sys # sys нужен для передачи argv в QApplication
from PyQt5 import QtWidgets
import design # Это наш конвертированный файл дизайна
import gspread # Библиотека для взаимодействия с гугл таблицами
from oauth2client.service_account import ServiceAccountCredentials #библиотека для авторизации
# Определяем область доступа
scope = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']
# Загружаем учетные данные
creds = ServiceAccountCredentials.from_json_keyfile_name('galichroutes-449709-ab64df0863a1.json', scope)
# Авторизуемся и создаем клиент
client = gspread.authorize(creds)
# Открываем таблицу по названию
spreadsheet = client.open('Достопримечательности Галича')
# Открываем первый лист, который имеет номер 0
#worksheetPoint = spreadsheet.get_worksheet(0)
#Либо можно обратиться к листу прямо по его имени
worksheetPoint = spreadsheet.worksheet('Точка маршрута')
class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow):
def __init__(self):
# Это здесь нужно для доступа к переменным, методам
# и т.д. в файле design.py
super().__init__()
self.setupUi(self) # Это нужно для инициализации нашего дизайна
self.sendPoint.clicked.connect(self.sender)
self.recvPoints.clicked.connect(self.reciver)
def sender(self):
old_data = worksheetPoint.get_all_records()
if old_data != []:
numberPoint = int(old_data[len(old_data)-1]['Номер'])
print(old_data)
print(numberPoint)
else:
numberPoint = 0
rowPoint = [str(numberPoint + 1), # генерируем новый номер точки маршрута
self.routePoint.text(),
self.latitude.text(),
self.longitude.text(),
self.descriptionPoint.toPlainText(),
self.imagePoint.text()]
worksheetPoint.insert_row(rowPoint, len(old_data)+2) #индексы строк начинаются с 1, а первая - заголовочная
def reciver(self):
self.viewPoints.clear()
old_data = worksheetPoint.get_all_records()
headers = list(old_data[0].keys()) #создаем список ключей - это шапка таблицы
self.viewPoints.addItem(f"{headers[1]} | {headers[4]}") # берем только 1 и четвертый ключи Название и Описание
print(headers)
for point in old_data:
name = point[headers[1]]
description = point[headers[4]]
self.viewPoints.addItem(f"{name} | {description}")
def main():
app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication
window = ExampleApp() # Создаём объект класса ExampleApp
window.show() # Показываем окно
app.exec_() # и запускаем приложение
if __name__ == '__main__': # Если мы запускаем файл напрямую, а не импортируем
main() # то запускаем функцию main()
Last modified: Sunday, 2 February 2025, 6:19 PM