我正在尝试创建一个应用程序,该应用程序将允许用户自动获取单词的定义。我是通过在文本中动态创建每个单词的按钮来做到这一点的,我想将按钮添加到滚动条中。
我可以显示一个滚动条,但当前不滚动。而且所有按钮均显示为垂直线。
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()
当前,所述输出具有一个滚动条,该滚动条不起作用,并且所有按钮都在垂直线上。我希望滚动条并使按钮以逐行的形式显示,就好像用户正在阅读普通文本(如在书中一样)。