在滚动条的两侧显示文本

时间:2017-03-07 02:07:05

标签: python tkinter python-2.x

我对Tkinter很新。

我正在尝试构建一个聊天系统,我希望在滚动条的左侧显示用户的查询,并在系统右侧显示响应。有可能吗?

目前,一切都在一边。这就是scrollview的样子

代码是:

NULL

我在函数中做2次插入。一个用户查询,另一个用系统响应。

1 个答案:

答案 0 :(得分:1)

如果要通过滚动条分隔查询和响应,则需要使用2个列表框。我将它们一起滚动的代码基于http://effbot.org/tkinterbook/listbox.htm,如果您也想将它们与鼠标滚轮一起滚动,请参阅此问题的答案:Scrolling multiple Tkinter listboxes together

您一直在混合打包和网格布局(例如,对于rectangleFrame),这些布局是不兼容的。你需要选择一个并坚持下去。我在我的代码中使用了包。

import Tkinter as tk
import ttk

master = tk.Tk()

rectangleFrame = ttk.Frame(master)
rectangleFrame.pack(pady=10, padx=10, fill="both", expand=True)

count = 0  # query counter to see that both listboxes are scrolled together

def getEdittextValue():
    global count
    listbox_query.insert("end", "You: query %i" % count)
    listbox_query.itemconfig("end", {'bg':'red', 'fg':'black'})
    listbox_response.insert("end", "Bot:response %i" % count)
    listbox_response.itemconfig("end", {'bg':'grey', 'fg':'blue'})
    count += 1

def yview(*args):
    """ scroll both listboxes together """
    listbox_query.yview(*args)
    listbox_response.yview(*args)

scrollbar = ttk.Scrollbar(rectangleFrame)
listbox_query = tk.Listbox(rectangleFrame)
listbox_response = tk.Listbox(rectangleFrame)

scrollbar.config(command=yview)
listbox_query.config(yscrollcommand=scrollbar.set)
listbox_response.config(yscrollcommand=scrollbar.set)

query_button = ttk.Button(rectangleFrame, command=getEdittextValue, text="Process")

listbox_query.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="left", fill="y")
listbox_response.pack(side="left", fill="both", expand=True)
query_button.pack(side="left")

master.mainloop()