我正在 tkinter 中制作聊天机器人 UI 原型。但是,我似乎找不到为什么我的画布小部件的边框(至少我假设它是边框)(在框架小部件内定义)可见且小于框架小部件的原因。请参阅屏幕截图以进行澄清。
我的UI类定义如下。我省略了其他方法,因为它们与“chat_frame”设置完全分开。
from tkinter import *
class DocuChatbotUI(Tk):
"""Class for the Documentation Chatbot UI."""
settings_frame = None
chat_frame = None
input_text_frame = None
send_button_frame = None
input_text = None
input_text_entry = None
send_button = None
chat_bubbels = []
chat_canvas = None
model_label = None
def __init__(self):
super().__init__()
self.initialise_ui()
def initialise_ui(self):
"""Initialises the UI of the chatbot."""
self.geometry("1000x600")
self.title("Documentation Chatbot")
self.configure(bg="#FFFFFF")
self.columnconfigure(list(range(9)), minsize=100, weight=1)
self.rowconfigure(list(range(9)), minsize=60, weight=1)
self.create_chat_frame()
self.resizable(False, False)
def create_chat_frame(self):
"""Creates the chat frame."""
self.chat_frame = Frame(master=self, bg="#F0F0F0")
self.chat_frame.grid(row=1, column=1, rowspan=7, columnspan=7, padx=5, pady=5, sticky="nsew")
self.chat_canvas = Canvas(master=self.chat_frame, bg="#F0F0F0")
self.chat_canvas.grid(sticky="nsew")
if __name__ == "__main__":
chatbot_app = DocuChatbotUI()
chatbot_app.mainloop()
我还使用这里的一些代码来创建基本的聊天气泡Tkinter Chatbot Bubbles。我不认为这是问题的原因,因为在创建单个聊天气泡之前画布小部件的边框已经可见。
我已经尝试过使用 .pack() 和 .grid() 变体来将画布适合框架小部件内,但似乎都无法解决问题。
感谢@BryanOakley,解决方案是在创建 Canvas 对象时设置
highlightthickness=0
,例如Canvas(master=self.chat_frame, bg="#F0F0F0", borderwidth=0, highlightthickness=0)
。
大多数小部件都定义
highlightthickness
参数(请参阅此处 Tk Docs),其中某些小部件默认为非零值。