直接向Tkinter GUI打开二进制文件

2024-05-26 09:19:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在您的帮助下,我已经能够创建一个Tkinter应用程序,使用cPickle将数据保存为二进制,并且我能够使用简单的下拉式级联(文件打开、文件保存等)将这些数据打开回应用程序

我的问题是,为了让用户打开数据,他们必须打开我创建的exe,选择文件打开,导航到二进制文件并单击它。显然,这对一些人来说太多了,他们想直接双击二进制文件来打开文件。我以一种虚构的.xxx格式保存了二进制文件,我可以将该文件与exe应用程序关联,但是当我启动该文件时,它会打开Tkinter GUI,但什么也没有发生。显然,我必须调用open函数来填充数据。有人知道这样做的方法吗?有可能吗?一种将数据保存到二进制文件中的方法,当直接打开脚本时,脚本会查找排序标志,我可以调用open函数,或者我是否偏离了基准?谢谢

更新

def file_open():
"""Open saved .gsd binary file"""
designer_open_file = cleanpath
designer_open_file = filedialog.askopenfilename(
        defaultextension=".gsd",
        filetypes=(("GSD", "*.gsd"), ("All files", "*"))
    )
if designer_open_file is None:
    return

saved_gsd_data = pk.load(open(designer_open_file, "rb"))

Outside of function:

if len(sys.argv) > 1:
openfilepath = "".join(sys.argv[1:])
cleanpath = os.path.abspath(openfilepath)
root.after_idle(file_open)

Tags: 文件数据方法函数脚本应用程序tkinter二进制
1条回答
网友
1楼 · 发布于 2024-05-26 09:19:20

考虑这个简单的例子

import tkinter as tk
import sys

def load_file():
    try:
        with open(sys.argv[1],'r') as data:
            text.insert(1.0,data.readlines())
    except FileNotFoundError:
        print("File does not exist")

root = tk.Tk()
text = tk.Text(root,width=80,height=40)
text.grid()

if len(sys.argv) > 1:
    root.after_idle(load_file)

root.mainloop()

如果传递给python脚本/可执行文件的参数长度大于1(这意味着不仅仅是我们正在执行的文件名),那么我会安排tkinter在绘制GUI后调用load_file函数

然后在load_file函数中,我从参数中获取文件名,并使用它打开文件并执行所需的操作

(这已经作为python脚本而不是可执行文件进行了测试,因为您尚未指定如何构建可执行文件)

相关问题 更多 >