Как добавить полосу прокрутки в текстовый виджет tkinter с помощью метода .grid - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь создать полосу прокрутки для моего текстового виджета, однако я не могу выполнить сетку () полосы прокрутки, поэтому полоса прокрутки не появляется в текстовом виджете.Не обращайте внимания на то, что находится в переменной Quote, это просто тестовые данные.

EventScrollBar= tk.Scrollbar(EventChoice)
EventText=tk.Text(EventChoice,height=25,width=50)
EventText.grid(row=3,column=1,columnspan=5)
EventScrollBar.config(command=EventText.yview)
EventText.config(yscrollcommand=EventScrollBar.set)
Quote=("""
...
wd""")
EventText.insert(tk.END,Quote)
EventText.config(state=tk.DISABLED)

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Я даю вам два способа сделать Scrollbar.

1) Использование tk.Scrollbar

import tkinter as tk

root = tk.Tk()
EventText=tk.Text(root, height=10, width=50)
EventScrollBar= tk.Scrollbar(root, command=EventText.yview, orient="vertical")
EventScrollBar.grid(row=0, column=1, sticky="ns")
EventText.grid(row=0,column=0)
EventText.configure(yscrollcommand=EventScrollBar.set)
Quote=("""Suck\ne\ne\ne\ne\ne\ne\ne\ne\ne\nee\ne\ne\ne\ne\ne\ne\ne\nee\ned\ne\ne\nde\nd\ne\nded\nc\nc\nx\nc\nx\nc\nzc\ns\nds\nx\nwd\ns\nd\nwd""")
EventText.insert(tk.END,Quote)

root.mainloop()

2) Использование ScrolledText

import tkinter as tk
from tkinter import scrolledtext

root = tk.Tk()
Quote=("""Suck\ne\ne\ne\ne\ne\ne\ne\ne\ne\nee\ne\ne\ne\ne\ne\ne\ne\nee\ned\ne\ne\nde\nd\ne\nded\nc\nc\nx\nc\nx\nc\nzc\ns\nds\nx\nwd\ns\nd\nwd""")
EventText = scrolledtext.ScrolledText(root, height=10, width=50)
EventText.insert("end", Quote)
EventText.grid(row=0, column=0)

root.mainloop()

enter image description here

0 голосов
/ 14 ноября 2018

Ваш код показывает, что вы не пытались использовать полосу прокрутки.

См. Пример ниже:

import tkinter as tk

root = tk.Tk()

ybar= tk.Scrollbar(root)
event_text=tk.Text(root, height=10, width=10)
ybar.config(command=event_text.yview)
event_text.config(yscrollcommand=ybar.set)

event_text.grid(row=0, column=0)
ybar.grid(row=0, column=1, sticky="ns")

for i in range(100):
    event_text.insert("end", "{}\n".format(i))

root.mainloop()

На всякий случай, если вы используете grid() в исходном коде и забыли его здесь, в вашем примере, ваша проблема, вероятно, связана с columnspan=5.

Если вы сделаете это со своим текстовым виджетом, он будет располагаться в верхней части полосы прокрутки.

Попробуйте использовать что-то подобное при использовании columnspan:

import tkinter as tk

root = tk.Tk()

ybar= tk.Scrollbar(root)
event_text=tk.Text(root, height=10, width=10)
ybar.config(command=event_text.yview)
event_text.config(yscrollcommand=ybar.set)

event_text.grid(row=0, column=0, columnspan=5)
ybar.grid(row=0, column=5, sticky="ns")

for i in range(100):
    event_text.insert("end", "{}\n".format(i))

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