我正在尝试构建一个响应用户问题的Bot,我想在Frame的右侧显示用户问题,并在左侧显示Bot的答案。我已经使用标记(How to set justification on Tkinter Text box)阅读了关于文本中的对齐的帖子,但我无法将其应用于我的代码,而且我根本不熟悉这些标记。你能帮帮我吗,我做错了什么? (如果这不清楚请告诉我)
这是我的代码:
from tkinter import *
window = Tk()
ia_answers= "test\n"
input_frame = LabelFrame(window, text="User :", borderwidth=4)
input_frame.pack(fill=BOTH, side=BOTTOM)
input_user = StringVar()
input_field = Entry(input_frame, text=input_user)
input_field.pack(fill=BOTH, side=BOTTOM)
ia_frame = LabelFrame(window, text="Discussion",borderwidth = 15, height = 100, width = 100)
ia_frame.pack(fill=BOTH, side=TOP)
text = Text(ia_frame, state='disabled', text="ok")
text.pack()
text.tag_configure("right", justify='right')
text.tag_add("right", 1.0, "end")
def Enter_pressed(event):
"""Took the current string in the Entry field."""
input_get = input_field.get()
input_user.set("")
text.configure(state='normal')
text.insert('end', input_get)
text.insert('end',ia_answers)
text.configure(state='disabled')
input_field.bind("<Return>", Enter_pressed)
window.mainloop()
答案 0 :(得分:1)
创建两个标记 - “left”和“right”,设置alignment属性,然后在插入时将标记应用于文本。严格来说,你不需要“左”标签,但它使你的代码的意图更清晰。
text = Text(ia_frame, state='disabled', text="ok")
text.tag_configure("right", justify="right")
text.tag_configure("left", justify="left")
...
text.insert("end", "this is right-justified\n", "right")
text.insert("end", "this is left-justified\n", "left")
...