Обмен технологиями

tk устанавливает цвет текста

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

 

  1. import tkinter as tk
  2. from tkinter import messagebox
  3. def change_text_color(color):
  4. # 获取选中的文本范围
  5. start_index = text_widget.tag_ranges(tk.SEL)
  6. if start_index:
  7. # 如果文本被选中,只改变选中文本的颜色
  8. tag_name = f"color_{color}"
  9. # 移除选中文本上的所有颜色标签
  10. for tag in text_widget.tag_names(start_index[0]):
  11. if tag.startswith("color_"):
  12. text_widget.tag_remove(tag, start_index[0], start_index[1])
  13. # 添加新的颜色标签
  14. text_widget.tag_add(tag_name, start_index[0], start_index[1])
  15. text_widget.tag_config(tag_name, foreground=color)
  16. else:
  17. # 如果没有文本被选中(即全选文本),改变所有文本的颜色
  18. text_widget.tag_remove("color_all", "1.0", tk.END)
  19. text_widget.tag_add("color_all", "1.0", tk.END)
  20. text_widget.tag_config("color_all", foreground=color)
  21. def on_ctrl_y(event):
  22. # 当按下Ctrl+Y时,调用change_text_color函数
  23. change_text_color("red")
  24. root = tk.Tk()
  25. # 创建一个Text控件
  26. text_widget = tk.Text(root)
  27. text_widget.pack(fill=tk.BOTH, expand=True)
  28. # 绑定Ctrl+Y快捷键
  29. text_widget.bind("<Control-y>", on_ctrl_y)
  30. # 创建菜单栏
  31. menu_bar = tk.Menu(root)
  32. # 创建颜色菜单
  33. color_menu = tk.Menu(menu_bar, tearoff=0)
  34. color_menu.add_command(label="Red", command=lambda: change_text_color("red"))
  35. color_menu.add_command(label="Blue", command=lambda: change_text_color("blue"))
  36. color_menu.add_command(label="Green", command=lambda: change_text_color("green"))
  37. color_menu.add_command(label="Black", command=lambda: change_text_color("black"))
  38. menu_bar.add_cascade(label="Color", menu=color_menu)
  39. # 将菜单栏添加到窗口
  40. root.config(menu=menu_bar)
  41. root.mainloop()