#python-3.x #tkinter #python-3.8 #tkinter-text
#python-3.x #tkinter #python-3.8 #tkinter-текст
Вопрос:
Я создаю чат, используя Python 3.8 и Tkinter. Я реализовал цветной текст с помощью метода window.create() текстового виджета. Но когда вы начинаете прокручивать вверх, этот текст перекрывает остальную часть интерфейса программы. Как я могу это исправить?
Вот код, который я использую:
def coloredOutput(self, bg, fg, text):
try:
a = []
for line in text.split('n'):
a.append(len(line))
if len(a) <= 10:
label = Text(bg=bg, fg=fg, width=max(a), height=len(a), borderwidth=0)
label.insert(1.0, text)
label.configure(state=DISABLED)
else:
msg = "~ too many lines! 10 is max, but there's " str(len(a)) " lines in this message ~"
label = Text(bg="red", fg="white", width=len(msg), height=1, borderwidth=0)
label.insert(1.0, msg)
label.configure(state=DISABLED)
except Exception as e:
print(e)
msg = "Formatting error! Maybe your message is not properly formatted?"
label = Text(bg="red", fg="white", width=len(msg), height=1, borderwidth=0)
label.insert(1.0, msg)
label.configure(state=DISABLED)
self.text.window_create(END, window=label)
Спасибо за вашу помощь. Извините за любые ошибки в моем английском, я из Украины.
Комментарии:
1. Не могли бы вы показать нам минимальный пример?
2. @jizhihaoSAMA одна секунда
3. @jizhihaoSAMA 1. Клонировать репозиторий ( github.com/3elDU/SecureChat ) 2. Сделайте как здесь ( youtube.com/watch?v=TdJGwTuJSZ8amp;feature=youtu.be ) Чтобы открыть чат, просто запустите Chat.pyw или, скорее, «Начать чат с debug console.bat», также введите 176.8.99.2 в качестве ip
Ответ №1:
Окно, которое добавляется с window_create
, должно быть дочерним для текстового виджета, а не дочерним для корневого окна.
label = Text(self.text, ...)
self.text.window_create(END, label)
Комментарии:
1. Спасибо, это помогло! Я бы никогда не поверил, что вы ответите мне, я видел много ваших ответов!