如何在 Tkinter 中删除框架小部件内的画布小部件边框?

问题描述 投票:0回答:1

我正在 tkinter 中制作聊天机器人 UI 原型。但是,我似乎找不到为什么我的画布小部件的边框(至少我假设它是边框)(在框架小部件内定义)可见且小于框架小部件的原因。请参阅屏幕截图以进行澄清。 Screenshot of 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() 变体来将画布适合框架小部件内,但似乎都无法解决问题。

python tkinter tkinter-canvas tkinter-layout
1个回答
0
投票

感谢@BryanOakley,解决方案是在创建 Canvas 对象时设置

highlightthickness=0
,例如
Canvas(master=self.chat_frame, bg="#F0F0F0", borderwidth=0, highlightthickness=0)

大多数小部件都定义

highlightthickness
参数(请参阅此处 Tk Docs),其中某些小部件默认为非零值。

© www.soinside.com 2019 - 2024. All rights reserved.