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

如何解决AttributeError: 'Tk'对象没有'open'属性问题?

问题分析

你遇到的AttributeError: 'Tk' object has no attribute 'open'错误,大概率是之前尝试过调用root.open()这类不存在的方法导致的(当前贴出的代码里并没有这段,但报错指向了这个问题)。另外当前代码的核心问题是:按钮没有绑定任何点击事件,而且os.startfile在程序启动时就直接执行了,不是点击按钮才触发。

解决方案

要实现点击按钮打开指定Python文件,需要给按钮绑定点击触发的函数,把打开文件的逻辑放在函数里,具体修改如下:

步骤1:定义触发函数

创建一个函数,里面调用os.startfile来打开目标文件:

def open_target_file():
    # 替换成你的目标Python文件路径
    target_path = r'C:\Users\75259\PycharmProjects\pythonProject9\main.py'
    os.startfile(target_path)

步骤2:给按钮绑定点击事件

在创建ttk.Button时,通过command参数关联上面的函数:

open_button = ttk.Button(
    root,
    text='calculater',
    command=open_target_file  # 绑定点击触发的函数
)

完整修改后的代码

import os
import tkinter as tk
from tkinter import ttk

def open_target_file():
    # 打开指定的Python文件
    os.startfile(r'C:\Users\75259\PycharmProjects\pythonProject9\main.py')

# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('juststop')

open_button = ttk.Button(
    root,
    text='calculater',
    command=open_target_file  # 绑定点击触发的函数
)
open_button.pack(
    ipadx=5,
    ipady=5,
    expand=True
)

root.mainloop()

跨平台兼容方案(可选)

os.startfile仅支持Windows系统,如果需要在Linux/macOS上运行,可以用subprocess模块替代:

import subprocess
import sys
import os

def open_target_file():
    target_path = r'C:\Users\75259\PycharmProjects\pythonProject9\main.py'
    # 根据系统选择打开方式
    if sys.platform == 'win32':
        os.startfile(target_path)
    elif sys.platform == 'darwin':  # macOS
        subprocess.run(['open', target_path])
    else:  # Linux
        subprocess.run(['xdg-open', target_path])

内容的提问来源于stack exchange,提问作者Juststop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:15:34