ich versuche seit längerem schon die, am anfang vorhandene uhr- und datumsanzeige, nach (jedem) fensterwechsel wieder im startfenster anzeigen zu lassen.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# from __future__ import absolute_import, division, print_function
import tkinter as tk
import os
import time
from threading import Thread, Event
class Clock:
@staticmethod
def update_clock():
now = time.strftime("%H:%M:%S\n%d. %B %Y")
return now
class Start_Page(Clock):
def __init__(self, master):
Clock.__init__(self)
self.master = master
self.master.state('zoomed')
self.master.overrideredirect(True)
self.master.resizable(False, False)
self.master.columnconfigure(0, weight=2)
self.master.iconbitmap(default='logo_piepenbrock.ico')
###########
# FOOTER
###########
self.footer = tk.Frame(self.master, height=35, bg="Gray")
self.footer.pack_propagate(False)
self.footer.pack(side=tk.BOTTOM, fill=tk.X)
self.footer.bind("<Enter>", self.start_clock)
# LABEL: CLOCK - FOOTER
self.clock_var = tk.StringVar()
self.label_clock = tk.Label(self.footer, textvariable=self.clock_var, font=("Arial", 9, 'bold'), bg="Grey")
self.label_clock.pack(side=tk.RIGHT, padx=10)
self.work = Thread(target=self.start_clock)
self.work.start()
###########
# MIDDLE
###########
self.middle = tk.Frame(self.master)
self.middle.pack(side=tk.BOTTOM)
# BOTTOM: NEW_WINDOW - FOOTER
self.new_window = tk.Button(self.middle, text='New Window', width=15, command=self.new_window)
self.new_window.pack(pady=5)
# BUTTON: CLOSE - FOOTER
self.close = tk.Button(self.middle, text='Close', width=15)
self.close.pack(pady=20)
self.close.bind("<Button-1>", self.exit_program)
def start_clock(self):
while True:
self.clock_var.set(self.update_clock())
def frame_mapped(self, event):
self.master.update_idletasks()
self.master.overrideredirect(True)
self.master.state('zoomed')
def new_window(self):
self.master.overrideredirect(False)
self.master.iconify()
new_window = tk.Toplevel(self.master)
Page_1(new_window)
def exit_program(self, event):
os._exit(0)
class Page_1(Clock):
def __init__(self, master):
self.master = master
self.master.state('zoomed')
self.master.overrideredirect(True)
self.master.resizable(False, False)
# HEADER
self.header = tk.Frame(self.master, height=35, bg="Gray")
self.header.pack_propagate(False)
self.header.pack(side=tk.TOP, fill=tk.X)
# FOOTER
self.footer = tk.Frame(self.master, height=35, bg="Gray")
self.footer.pack_propagate(False)
self.footer.pack(side=tk.BOTTOM, fill=tk.X)
# BUTTONS
self.frame = tk.Frame(self.master)
self.frame.pack(side=tk.BOTTOM, pady=20)
self.quitButton = tk.Button(self.frame, text='Back', width=15, command=self.close_windows)
self.quitButton.pack(pady=20)
def close_windows(self):
self.master.destroy()
second = tk.Tk()
Start_Page(second)
def main():
root = tk.Tk()
Start_Page(root)
root.mainloop()
if __name__ == '__main__':
main()
habe zu letzt versucht, das irgendwie mit der .bind-methode zu lösen (self.footer.bind("<Enter>", self.start_clock)),
leider funktioniert bisher keine meiner ideen