Я действительно добился некоторого прогресса в основных понятиях и формулировках в Python, но я немного теряюсь, когда мы начинаем добавлять в смесь Tkinter. BryanOakley внес большой вклад в вопрос о множественных окнах и Tkinter, которые повсюду в Интернете. Я взял его пример, объединил его с некоторыми другими примерами, которые я видел, и начал делать часы с будильником, который должен менять фон часов, когда срабатывает время будильника. Проблема в том, что я просто не могу видеть сквозь деревья. лес и не вижу, как:
A) Получить запрос на ввод из окна Tkinter
B) Вызвать пользовательский ввод в классе будильника в класс часов, чтобы вызвать изменение фона окна.
Я думаю, что моя проблема в том, что я не совсем понимаю, куда вкладывать различные методы и как взять переменную, хранящую пользовательские данные, и отформатировать ее из строки в раз. Я думаю, мне просто нужно некоторое руководство, но если вы думаете, что я не в себе, то, пожалуйста, укажите мне на поверхностный конец, чтобы я мог продолжать практиковаться. Вот моя мысль, поместить это или что-то подобное в метод tick(), конечно, я должен задаться вопросом, где ввод будет вообще вводиться в Tkinter. Я по спирали. Помощь:
def wake(self):
self.__init__(self, hour, min)
self.hour = hour
self.min = min
input("what is the hour?",
input("What is the min?",
hour = datetime.datetime.now().strftime("%I")
min = datetime.datetime.now().strftime("%M")
if self.hour and self.min == time1():
label.config(text = time1, bg = "green")
else:
label.config(text = time1, bg = "red")
Вот что у меня есть до сих пор:
import tkinter as tk
from tkinter import font as tkfont
from tkinter import messagebox
import time
import datetime
class digitalClockApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.title_font = tkfont.Font(family='Helvetica', size=100, weight="bold", slant="italic")
container = tk.Frame(self)
container.pack(side = "top", fill= "both", expand =1)
container.grid_rowconfigure(0,weight = 1)
container.grid_columnconfigure(0, weight = 1)
self.frames = {}
for F in (introPage, clock, alarm):
page_name = F.__name__
frame = F(parent = container, controller = self)
self.frames[page_name] = frame
frame.grid(row = 0, column = 0, sticky = "nsew")
self.geometry("640x480")
self.show_frame("introPage")
def show_frame(self, page_name):
frame = self.frames[page_name]
frame.tkraise()
class introPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label = tk.Label(self, text = "Welcome", bg = "black", fg = "white", font = controller.title_font)
label.pack(side = "top", fill = "both", expand = 1)
button1 = tk.Button(self, text = "Go to Clock", command = lambda: controller.show_frame("clock"))
button2 = tk.Button(self, text = "Go to Set Alarm", command = lambda: controller.show_frame("alarm"))
button1.pack(side = "left")
button2.pack(side = "left")
class clock(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label = tk.Label(self, text = "", bg = "black", fg = "white", font = controller.title_font)
label.pack(side = "top", fill = "both", expand = 1)
button = tk.Button(self, text = "Home Screen", command = lambda: controller.show_frame("introPage"))
button.pack()
def tick(time1 = ""):
time2 = time.strftime("%I:%M:%S")
if time2 != time1:
time1 = time2
label.config(text = time1, bg = "red")
label.after(200, tick)
tick()
class alarm(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label = tk.Label(self, text = "", bg = "black", fg = "white", font = controller.title_font)
label.pack(side = "top", fill = "both", expand = 1)
def wake():
button = tk.Button(self, text = "Home Screen", command = lambda: controller.show_frame("introPage"))
button.pack()
if __name__ == "__main__":
app = digitalClockApp()
app.mainloop()