#python-3.x #tkinter #ttk #tkinter-scrolledtext
#python-3.x #tkinter #ttk #tkinter-scrolledtext
Вопрос:
Я установил тему моего главного окна на awtheme ‘awdark’.Все виджеты с расширением ttk сами устанавливают свой внешний вид в соответствии с темой, за исключением виджета с прокруткой текста, который имеет белый цвет (т.Е. Цвет поля, а также цвет и внешний вид полосы прокрутки), вероятно, потому, что он не является частью ttk.Мой виджет scrolledtext содержится в ttk.Кстати, виджет фрейма.Есть ли какое-либо решение для этого?
Комментарии:
1. Разве вы не можете просто изменить цвет текстового виджета в соответствии с вашей темой?
2. Меня беспокоит не цвет текста, а цвет полосы прокрутки. Он белый и должен быть синего цвета
3. Есть ли какой-либо способ изменить цвет полосы прокрутки scrolledTextwidget
Ответ №1:
Существует ли ttk-эквивалент виджета Scrolledtext Tkinter
Нет, нет. У виджетов ttk нет текстового виджета.
Виджет scrolledtext — это просто текстовый виджет и полосы прокрутки, больше ничего. Вы можете создать свой собственный, который использует полосы прокрутки ttk, всего несколькими строками кода.
Вот решение, которое не использует классы. Тот, который основан на классе, — это всего лишь пара дополнительных строк кода.
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
frame = ttk.Frame(root)
frame.pack(fill="both", expand=True)
text = tk.Text(frame, wrap="none")
vsb = ttk.Scrollbar(frame, command=text.yview, orient="vertical")
hsb = ttk.Scrollbar(frame, command=text.xview, orient="horizontal")
text.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)
vsb.grid(row=0, column=1, sticky="ns")
hsb.grid(row=1, column=0, sticky="ew")
text.grid(row=0, column=0, sticky="nsew")
root.mainloop()
Комментарии:
1. Спасибо, сэр, за этот код, он мне помог, но могу ли я также изменить цвет курсора, а также белый
2. @Ironman: Да, цвет курсора настраивается с
insertbackground
помощью опции.3. Еще раз спасибо
4. @BryanOakley Это хорошо, но когда я хочу создать класс, который ведет себя как ScrolledText (просто наследовая от tkinter.Text), я не могу просто создать сетку или упаковать вещи в конструкторе. Можете ли вы помочь с кодом для этого случая?
5. @petro4213: не наследуйте от
Text
виджета. Вместо этого наследование отFrame
. Это позволит вам размещать как полосы прокрутки, так и текстовый виджет вместе.