Tkinter:是否可以将输入框嵌入到文本段落中以进行完形填空任务?

时间:2018-06-16 10:02:02

标签: python tkinter

我试图对我的一些学生进行测试,他们需要在段落中输入缺失的单词(见图片)。我遇到的关键问题是尝试将输入框嵌入到文本段落中,这样当有间隙时,tkinter可以为学生输入一个输入框。

所需输出的草图:

Target

代码尝试:

import tkinter as tk

root = tk.Tk()
tk.Label(root, font=("Comic Sans MS",24,"bold"),\
         text="The largest bone in the human body is the").grid(row=0,column=0)
ent1 = tk.Entry(root)
ent1.grid(row=0,column=1)
tk.Label(root, font=("Comic Sans MS",24,"bold"),\
         text="which is found in the").grid(row=0,column=2)
ent2 = tk.Entry(root)
ent2.grid(row=0,column=3)
tk.mainloop()

感谢您的阅读,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用window_create方法将小部件添加到文本小部件。

这是一个快速示例,展示如何使用它将小部件嵌入到文本块中。代码在任何您想要条目小部件的位置插入包含{}的字符串。然后,代码在窗口小部件中搜索该模式,删除它,并插入条目窗口小部件。

import Tkinter as tk

quiz = (
    "The largest bone in the human body is the {} "
    "which is found in the {}. It is mainly made "
    "of the element {}, and is just below the {}."
)

root = tk.Tk()

text = tk.Text(root, wrap="word")
text.pack(fill="both", expand=True)

text.insert("end", quiz)

entries = []
while True:
    index = text.search('{}', "1.0")
    if not index:
        break
    text.delete(index, "%s+2c"%index)
    entry = tk.Entry(text, width=10)
    entries.append(entry)
    text.window_create(index, window=entry)

root.mainloop()

答案 1 :(得分:1)

您可以在文本小部件中插入条目,例如下面的内容。

import tkinter as tk

root = tk.Tk()

text = tk.Text(root)
text.pack()

text.insert('end', 'The largest ')

question = tk.Entry(text, width=10)
text.window_create('end', window=question)

text.insert('end', ' in the human body is...')

root.mainloop()