import tkinter as tk
from tkinter import messagebox
import datetime
import os
class KanameOS:
def __init__(self, root):
self.root = root
root.title("KanameOS")
root.geometry("800x500")
root.configure(bg="#008080")
# タイトル
title = tk.Label(
root,
text="KanameOS Desktop",
font=("Consolas", 20),
bg="#000080",
fg="white"
)
title.pack(fill="x")
# 時計
self.clock = tk.Label(
root,
font=("Consolas", 14),
bg="#008080",
fg="white"
)
self.clock.pack()
self.update_clock()
# アプリボタン
frame = tk.Frame(
root,
bg="#008080"
)
frame.pack(pady=40)
tk.Button(
frame,
text="📝 Memo",
width=15,
height=3,
command=self.memo
).grid(row=0,column=0,padx=10)
tk.Button(
frame,
text="🧮 Calculator",
width=15,
height=3,
command=self.calc
).grid(row=0,column=1,padx=10)
tk.Button(
frame,
text="💻 Terminal",
width=15,
height=3,
command=self.terminal
).grid(row=0,column=2,padx=10)
tk.Button(
frame,
text="Power Off",
width=15,
height=3,
command=root.destroy
).grid(row=1,column=1,pady=20)
def update_clock(self):
now=datetime.datetime.now()
self.clock.config(
text=now.strftime(
"%Y/%m/%d %H:%M:%S"
)
)
self.root.after(
1000,
self.update_clock
)
def memo(self):
win=tk.Toplevel()
win.title("Memo")
win.geometry("400x300")
text=tk.Text(win)
text.pack(
expand=True,
fill="both"
)
def save():
with open(
"memo.txt",
"w",
encoding="utf-8"
) as f:
f.write(
text.get("1.0","end")
)
messagebox.showinfo(
"Memo",
"Saved"
)
tk.Button(
win,
text="Save",
command=save
).pack()
def calc(self):
win=tk.Toplevel()
win.title("Calculator")
entry=tk.Entry(win)
entry.pack()
result=tk.Label(win)
result.pack()
def run():
try:
result.config(
text=str(
eval(entry.get())
)
)
except:
result.config(
text="ERROR"
)
tk.Button(
win,
text="=",
command=run
).pack()
def terminal(self):
win=tk.Toplevel()
win.title("Terminal")
win.geometry("500x300")
output=tk.Text(
win,
bg="black",
fg="lime"
)
output.pack(
expand=True,
fill="both"
)
entry=tk.Entry(win)
entry.pack(fill="x")
def command(event=None):
cmd=entry.get()
output.insert(
"end",
"> "+cmd+"\n"
)
if cmd=="help":
output.insert(
"end",
"help time ls shutdown\n"
)
elif cmd=="time":
output.insert(
"end",
str(datetime.datetime.now())
+"\n"
)
elif cmd=="ls":
output.insert(
"end",
str(os.listdir())
+"\n"
)
elif cmd=="shutdown":
self.root.destroy()
else:
output.insert(
"end",
"Unknown command\n"
)
entry.delete(0,"end")
entry.bind(
"<Return>",
command
)
root=tk.Tk()
os=KanameOS(root)
root.mainloop()