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
相关产品推荐
相关产品推荐

