#python #tkinter #google-api
#питон #tkinter #google-api
Вопрос:
У меня сейчас есть два файла. Один с именем quickstart, который использует API Google календаря и выводит события моего календаря на консоль и digitalclock.py это создало виджет рабочего стола, который отображает текущую дату и время. Я хочу иметь возможность выводить все, что печатается, в командную строку во время quickstart.py и отобразите его на виджете Tkinter.
вот мой quickstart.py файл
from __future__ import print_function import datetime import os.path from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials ** # If modifying these scopes, delete the file token.json. ** SCOPES = ['https://www.googleapis.com/auth/calendar.readonly'] def main(): """Shows basic usage of the Google Calendar API. Prints the start and name of the next 10 events on the user's calendar. """ creds = None # The file token.json stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time. if os.path.exists('token.json'): creds = Credentials.from_authorized_user_file('token.json', SCOPES) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: #print(os.getcwd()) flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open('token.json', 'w') as token: token.write(creds.to_json()) service = build('calendar', 'v3', credentials=creds) # Call the Calendar API now = datetime.datetime.utcnow().isoformat() 'Z' # 'Z' indicates UTC time print('Getting the upcoming 10 events') events_result = service.events().list(calendarId='primary', timeMin=now, maxResults=10, singleEvents=True, orderBy='startTime').execute() events = events_result.get('items', []) if not events: print('No upcoming events found.') for event in events: start = event['start'].get('dateTime', event['start'].get('date')) print(start, event['summary']) if __name__ == '__main__': main()
ВОТ МОЙ ФАЙЛ TKINTER
from tkinter import Tk from tkinter import Label import time from datetime import date from quickstart import * master = Tk() master.title("Peter's Digital Clock") #gets the time of the day and displays def get_time(): timeVar = time.strftime("%I:%M:%S %p") clock_time.config(text=timeVar) clock_time.after(200, get_time) clock_time = Label(master, font=("Calibri", 90), fg="green") Label(master,font=("Arial",30),fg="white").pack() clock_time.pack() get_time() #setup to get the date today = date.today() today_date = today.strftime("%A - %B %d, %Y") clock_date = Label(master, text = today_date, font=("Calibri", 90), fg = "red") clock_date.pack(pady=20) #PRINT GOOGLE CALANDER TO WIDGET g_events_text = main() google_events = Label(master, text = g_events_text, font=("Calibri", 20), fg = "blue") google_events.pack(pady=20) master.mainloop()
Комментарии:
1. Вы сказали нам, чего хотите, но не объяснили, почему вы не можете этого сделать. В чем конкретно вам нужна помощь?