You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook运行VS Code及Python Tkinter程序显示异常:颜色异常、按钮被截断

MacBook运行VS Code及Python Tkinter程序显示异常:颜色异常、按钮被截断

最近这几天我的VS Code和Python出了点奇怪的问题。我正在上的一门课里用到了Tkinter,之前一切都正常,但从上周开始,运行程序时颜色显示不对,按钮还被截断了。

我拿某次作业的代码举例,这段代码在我的PC和朋友的笔记本上都能正常运行,但在我的MacBook上就不行。我本来以为是代码的问题,但现在看来更像是VS Code或者Python本身的问题——GitHub Copilot还试着修改代码来适配按钮、修复颜色,结果反而更乱了。

到目前为止,我已经试过重装VS Code,升级Tkinter和Python,但问题还是没解决。下面是我用的代码,以及程序显示的差异说明:

import tkinter as tk
from tkinter import messagebox

# add contact
def add_contact():
    contact = entry.get()
    if contact:
        listbox.insert(tk.END, contact)
        entry.delete(0, tk.END)
        messagebox.showinfo("Contact Added", "New contact has been added successfully!")
    else:
        error_label.config(text="Please enter a contact name")

# select contact
def on_contact_select(evt):
    selected_indices = listbox.curselection()
    if selected_indices:
        selected_contact = listbox.get(selected_indices[0])
        selected_label.config(text=f"Selected Contact: {selected_contact}")
    else:
        selected_label.config(text="Selected Contact:")

# delete contact
def delete_contact(evt):
    selected_indices = listbox.curselection()
    if selected_indices:
        listbox.delete(selected_indices[0])
        selected_label.config(text="Selected Contact:")
        clicked_label.config(text="Button Clicked: Delete Contact")
    else:
        error_label.config(text="No contact selected to delete")

# clear all contacts
def clear_all_contacts(evt):
    listbox.delete(0, tk.END)
    selected_label.config(text="Selected Contact:")
    clicked_label.config(text="Button Clicked: Clear All")

root = tk.Tk()
root.title("Contact List Manager")
root.geometry("500x400+500+100")

frame = tk.Frame(root, bg="light green", width=350, height=50)
frame.pack()
frame.grid_propagate(False)

entry = tk.Entry(frame, width=30)
entry.grid(row=0, column=0)

add_button = tk.Button(frame, text="Add Contact", command=add_contact)
add_button.grid(row=0, column=1)

selected_label = tk.Label(root, text="Selected Contact:")
selected_label.pack()

clicked_label = tk.Label(root, text="Button Clicked:")
clicked_label.pack()

listbox = tk.Listbox(root, height=8, width=50)
listbox.pack()
listbox.bind("<<ListboxSelect>>", on_contact_select)

# error message
error_label = tk.Label(root, text="", fg="red")
error_label.pack()

# buttons 
button_frame = tk.Frame(root, bg="light blue", width=400, height=50)
button_frame.pack()
button_frame.grid_propagate(False)

delete_button = tk.Button(button_frame, text="Delete Contact", width=15)
delete_button.grid(row=0, column=0)
delete_button.bind("<Button-1>", delete_contact)

clear_button = tk.Button(button_frame, text="Clear All", width=15)
clear_button.grid(row=0, column=1)
clear_button.bind("<Button-1>", clear_all_contacts)

quit_button = tk.Button(button_frame, text="Quit", width=15, command=root.quit)
quit_button.grid(row=0, column=2)

root.mainloop() 

显示效果差异

  • 预期正常效果:界面布局规整,顶部添加联系人区域的light green背景色、底部按钮区域的light blue背景色正常显示;所有按钮(Add Contact、Delete Contact、Clear All、Quit)完整显示无截断,组件之间间距合理,整体符合代码设定的布局。
  • MacBook实际异常效果:框架的背景色未正常渲染;底部的Delete Contact、Clear All、Quit按钮出现明显截断,无法完整显示文字;整体布局错乱,组件间距和大小不符合预期。

备注:内容来源于stack exchange,提问作者Jack Overton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:29:32