Как сделать кнопку Tkinter так чтобы она открывала другое окно
Вот код:
from tkinter import *
window = Tk()
window.geometry('270x450')
button_1 = Button(text='Часы', width=10, height=5, font=('Roman 10'))
button_1.place(x=50, y=50)
button_2 = Button(text='Календарь', width=12, height=6, font=('Roman 8'))
button_2.place(x=150, y=50)
button_3 = Button(text='Настройки', width=10, height=5, font=('Roman 9'))
button_3.place(x=50, y=150)
button_4 = Button(text='Игра', width=10, height=5, font=('Roman 10'))
button_4.place(x=150, y=150)
window.mainloop()
А вот код приложения, которая кнопка должна открывать:
import tkinter
from tkinter import *
from datetime import datetime
root = tkinter.Tk()
root.title("Часы")
a = Label(root, font=("Gabriola", 20))
def update_time():
root.geometry('270x450+{}+{}'.format(500, 400))
a.config(text=f"{datetime.now():%H:%M:%S}")
root.after(100, update_time) # Запланировать выполнение этой же функции через 100 миллисекунд
a = Label(root, font=("helvetica", 40))
a.place(relx=0.5, rely=0.5, anchor=CENTER)
update_time()
root.mainloop()
Ответы (2 шт):
Автор решения: Leonid
→ Ссылка
Где приложение часы находится не знаю, но вреде должно открыть файл
import subprocess
button_1 = Button(text='Часы', width=10, height=5, font=('Roman 10'),
command=open_button)
# Точно не помню как атрибут command выглядит
def open_button():
subprocess.Popen(["Путь к фалйлу"])
# Можно еще - import os; os.system('"Путь к файлу"')
# ; означает, что код можно записать в 1 строку (тоже самое, что и enter)
Автор решения: insolor
→ Ссылка
Второе окно создаете через Toplevel вместо Tk, оборачиваете его создание в функцию, эту функцию вызываете через кнопку:
import tkinter as tk
from datetime import datetime
def clock():
clock_window = tk.Toplevel()
clock_window.title("Часы")
label = tk.Label(clock_window, font=("helvetica", 40))
label.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
def update_time():
clock_window.geometry('270x450+{}+{}'.format(500, 400))
label.config(text=f"{datetime.now():%H:%M:%S}")
clock_window.after(100, update_time) # Запланировать выполнение этой же функции через 100 миллисекунд
update_time()
window = tk.Tk()
window.geometry('270x450')
button_1 = tk.Button(text='Часы', width=10, height=5, font=('Roman 10'), command=clock)
button_1.place(x=50, y=50)
...
window.mainloop()