Реализация Dark-режима с функцией включения / выключения в программе Simple Python Tkinter? - PullRequest
0 голосов
/ 09 марта 2020

Я следовал этому руководству при создании очень простого приложения для текстового редактора, используя Python's Tkinter. Я хотел добавить опцию использования checkbutton, поэтому, когда checked, тема текстового редактора изменится на тему темного режима, а когда unchecked вернется к белой теме по умолчанию. Как я могу это сделать?

Я попытался связать функцию checkbutton, где она будет проверять состояние и, в зависимости от состояния, изменять переменные кадров в окне. Например, если бы это было:

frame = tk.Frame(colour=white)

в качестве значения по умолчанию, в функцию, которую я бы добавил:

frame = tk.Frame(colour=white)

Даже для меня это выглядело неправильно. (Я знаю, что формат неправильный.)

Вот код (без моей попытки сделать темный режим):

import tkinter as tk
from tkinter.filedialog import askopenfilename, asksaveasfilename

def open_file():
    """Open a file for editing."""
    filepath = askopenfilename(
        filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")]
    )
    if not filepath:
        return
    txt_edit.delete(1.0, tk.END)
    with open(filepath, "r") as input_file:
        text = input_file.read()
        txt_edit.insert(tk.END, text)
    window.title(f"Simple Text Editor - {filepath}")

def save_file():
    """Save the current file as a new file."""
    filepath = asksaveasfilename(
        defaultextension="txt",
        filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")],
    )
    if not filepath:
        return
    with open(filepath, "w") as output_file:
        text = txt_edit.get(1.0, tk.END)
        output_file.write(text)
    window.title(f"Simple Text Editor - {filepath}")

window = tk.Tk()
window.title("Simple Text Editor")
window.rowconfigure(0, minsize=800, weight=1)
window.columnconfigure(1, minsize=800, weight=1)

txt_edit = tk.Text(window)
fr_buttons = tk.Frame(window, relief=tk.RAISED, bd=2)
btn_open = tk.Button(fr_buttons, text="Open", command=open_file)
btn_save = tk.Button(fr_buttons, text="Save As...", command=save_file)

btn_open.grid(row=0, column=0, sticky="ew", padx=5, pady=5)
btn_save.grid(row=1, column=0, sticky="ew", padx=5)

fr_buttons.grid(row=0, column=0, sticky="ns")
txt_edit.grid(row=0, column=1, sticky="nsew")

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