Мне нужна помощь, чтобы заставить мой код работать. Мое приложение предназначено для получения информации о предмете, а затем запланировать открытие документа.
Я пытался создать графический интерфейс с использованием tkinter, но застрял, когда снова нужно запустить графический интерфейс, чтобы получить больше входных данных, а затем применить функцию расписания.
В частности, я пыталсязаставить entSubject.get()
вернуть значение, которое я могу затем поместить в список, а затем перебрать этот список (?). Я не знаю, нахожусь ли я на правильном пути.
Вот мой код:
import subprocess
import schedule
import time
import tkinter
from tkinter import *
from functools import partial
def open_document(pathname):
subprocess.call(['open', pathname])
def setup_scheduling(subject):
if classDay == "Monday":
schedule.every().monday.at(classTime).do(
partial(open_document, pathname)
)
# ... repeats code for the rest of week ...
Приведенный выше код работал нормально без интерфейса GUI.
############
# setting up GUI
window = tkinter.Tk()
window.title("UniBuddy - Document Retriever")
# defining post-submission messages
def getSubject():
subject = entSubject.get()
Label(window, text = "Your subject is:").grid(row = 2, column = 0)
Label(window, text = subject).grid(row = 3, column = 0)
print(subject)
# btn = Button(window, text = "Next", command = askClasstime).grid(row = 4, column = 1)
def getTime():
classTime = entClasstime.get()
Label(window, text = "Your classtime is:").grid(row = 7, column = 0)
Label(window, text = classTime).grid(row = 8, column = 0)
# btn = Button(window, text = "Next", command = askClassDay).grid(row = 9, column = 1)
def getDay():
classDay = entClassDay.get()
Label(window, text = "Your class runs every:").grid(row = 11, column = 0)
Label(window, text = classDay).grid(row = 12, column = 0)
# btn = Button(window, text = "Next", command = askPathname).grid(row = 11, column = 1)
def getPathname():
Pathname = entPathname.get()
Label(window, text = "Your file is located at:").grid(row = 15, column = 0)
Label(window, text = Pathname).grid(row = 16, column = 0)
btn = Button(window, text = "Complete", command = registeredAll).grid(row = 17, column = 1)
def registeredAll():
Label(window, text = "Registered your subject!").grid(row = 18, column = 0)
Все это тоже хорошо выглядит: 
Здесь все немного мутно.
# asking which subject
lblSubject = Label(window, text = "Which subject would you like to set up?"
).grid(row = 0, column = 0, padx = 0, pady = 10)
entSubject = Entry(window)
entSubject.grid(row = 0, column = 1)
btn = Button(window, text = "Submit", command = getSubject).grid(row = 1, column = 1)
# asking subject time
lblClasstime = Label(window, text = "What time is your class? Enter in 24-hr time (HH:MM):"
).grid(row = 5, column = 0, padx = 0, pady = 10)
entClasstime = Entry(window)
entClasstime.grid(row = 5, column = 1)
btn = Button(window, text = "Submit", command = getTime).grid(row = 6, column = 1)
# asking subject day
lblClassDay = Label(window, text = "Enter day (i.e. Wednesday). If daily, enter 'Daily':"
).grid(row = 9, column = 0, padx = 0, pady = 10)
entClassDay = Entry(window)
entClassDay.grid(row = 9, column = 1)
btn = Button(window, text = "Submit", command = getDay).grid(row = 10, column = 1)
# asking for pathname
lblPathname = Label(window, text = "Which file would you like to open? Include entire pathname: "
).grid(row = 13, column = 0, padx = 0, pady = 10)
entPathname = Entry(window)
entPathname.grid(row = 13, column = 1)
btn = Button(window, text = "Submit", command = getPathname).grid(row = 14, column = 1)
#btn = Button(window, text = "Ready to launch scheduler?", command = listSubjects) .grid(row = 20, column = 1)
# main loop GUI
window.mainloop()
##########
# missing some scheduling here.
while True:
schedule.run_pending()
time.sleep(2)
Я хотел использовать setup_scheduling (), но не могу понять, как выполнить итерацию с использованием цикла for для нескольких записей.
Буду признателен за любые рекомендации. Также приносим свои извинения, если код грязный - медленно пытаясь изучить лучшие практики, задавая вопросы здесь и читая.
Спасибо!