Существует ли ttk-эквивалент виджета Scrolledtext Tkinter

#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 . Это позволит вам размещать как полосы прокрутки, так и текстовый виджет вместе.