GUI - как запустить его несколько раз и перебрать несколько записей? - PullRequest
0 голосов
/ 27 октября 2019

Мне нужна помощь, чтобы заставить мой код работать. Мое приложение предназначено для получения информации о предмете, а затем запланировать открытие документа.

Я пытался создать графический интерфейс с использованием 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)

Все это тоже хорошо выглядит: Screenshot of GUI Interface

Здесь все немного мутно.

# 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 для нескольких записей.

Буду признателен за любые рекомендации. Также приносим свои извинения, если код грязный - медленно пытаясь изучить лучшие практики, задавая вопросы здесь и читая.

Спасибо!

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