Как добавить кнопки на полосу прокрутки? - PullRequest
0 голосов
/ 10 апреля 2019

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

Я могу отобразить полосу прокрутки, но в данный момент она не прокручивается. И все кнопки отображаются в вертикальной линии.

from wiktionaryparser import WiktionaryParser
import json
import re
from tkinter import *
parser = WiktionaryParser()
parser.set_default_language('french')
root = Tk()
list_words = []
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu)
langmenu = Menu(menu)
menu.add_cascade(label="Import", menu=filemenu)
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
def FromFile(): # Function for reading data from a text file
    global list_words
    root.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("Text Files","*.txt"),("all files","*.*")))
    UserFile = open(root.filename, 'r')
    UserString = UserFile.read()
    list_words = re.findall(r"[\w']+|[.,!?;]", UserString)
    make_buttons()
filemenu.add_command(label="From File...", command=FromFile)
menu.add_cascade(label="Language", menu=langmenu)
# Menu that allows user to change the language 
def lang_fr():
    parser.set_default_language('french')
def lang_de():
    parser.set_default_language('german')
def lang_es():
    parser.set_default_language('spanish')
langmenu.add_command(label="French/Français", command=lang_fr)
langmenu.add_command(label="German/Deutsch", command=lang_de)
langmenu.add_command(label="Spanish/Espanol", command=lang_es)
# Gets the text from the button and returns the definiton 
def get_widget(widget):
        userInput = str(widget["text"])
        listy = parser.fetch(userInput)
        diction = listy[0]
        defin = diction["definitions"]
        defini = defin[0]
        definitus = defini["text"]
        definitus.pop(0)
        window = Toplevel(root)
        for definition in definitus:
            print(definition)





var = 0
#Function that makes the buttons 
def make_buttons():
    global list_words
    global var
    for word in list_words:
        btn = Button(root, text=word, bd=0)
        btn["command"] = lambda widget=btn:get_widget(widget)
        btn.pack(fill=BOTH, expand=1)


    root.update()

root.mainloop()

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

Изображение с выхода: enter image description here

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