Python tkinter报错:无法从'tkinter'导入'geometry'求解决
问题解决:cannot import name 'geometry' from 'tkinter'
核心错误原因
你错误地尝试直接从tkinter模块导入geometry,但**geometry是Tk窗口实例的方法**,不是tkinter提供的可导入对象,这是导致报错的直接原因。
修复步骤
删除错误的导入语句
删掉这行无效代码:from tkinter import geometry你已经通过
from tkinter import Tk导入了Tk类,创建root = Tk()实例后,直接用root.geometry("800x800")调用方法即可,不需要额外导入。修复GUI生命周期与逻辑错误
原代码存在多处运行逻辑问题,会导致程序异常:- 第一次调用
app.mainloop()后,程序会阻塞直到窗口关闭,后续代码(如root.destroy()、导入外部模块、再次启动主循环)都不会执行;且root.destroy()后再复用root创建实例会触发报错。 - 调整代码结构,将业务逻辑与GUI初始化合理拆分,确保只调用一次
mainloop()。
修复后的完整代码示例:
import csv from fileinput import filename import os from tkinter import * from tkinter import ttk from tkinter import Tk, Button, Frame, Entry, END # 外部模块导入放在代码开头 from attendance_create import (func_create, func_edit_add, func_ask_edit, func_edit_change, func_edit_sub, func_edit_view, func_open, func_first_change) class attendance_tester(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack() if __name__ == "__main__": root = Tk() root.geometry("800x800") root.title("Student Attendance Program") # 创建GUI组件 frm = ttk.Frame(root, padding=10) frm.grid() ttk.Label(frm, text="Hello World!").grid(column=0, row=0) ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0) app = attendance_tester(master=root) # 读取CSV文件(可根据需求移至按钮点击事件,避免阻塞GUI初始化) with open(r"C:\Users\user_name\Desktop\attendance_sheet.csv") as file: csv_file_read = csv.reader(file) for row in csv_file_read: print(row) # 调用外部函数(建议绑定到GUI事件,而非直接在初始化时执行) func_open() # 启动GUI主循环,仅需调用一次 root.mainloop()- 第一次调用
验证修复效果
保存修改后的代码重新运行,导入报错会消失,GUI窗口可正常显示,CSV读取与外部函数调用逻辑也能正常执行。
内容的提问来源于stack exchange,提问作者JUGR
相关产品推荐
相关产品推荐

