【问题标题】:Application doesn't work after sourcecode源代码后应用程序不起作用
【发布时间】:2013-04-10 20:53:57
【问题描述】:

我有一个正在运行的 Python+Tkinter 程序,它是一个字典创建器。但是,当我将源代码转换为应用程序时,程序本身不会创建它应该创建的文件。我对编程很陌生,如果您能帮助我,我将不胜感激。到目前为止,我已经尝试过 py2app 和 platypus 都给出了相同的结果。

代码如下:

#!/usr/bin/env python
from Tkinter import *
import tkMessageBox
import itertools
import string

def done():
    l=list()
    if check_a.get() == True:
        l.append(string.lowercase)

    if check_A.get() == True:
        l.append(string.uppercase)

    if check_0.get() == True:
        l.append(string.digits)
    l=''.join(l)
    n=entryvar.get()
    with open("b.txt","a+") as f:
        for i in itertools.product(l,repeat=n):
            f.write(''.join(list(i)))
            f.write('\n')
        f.close()

generater=Tk()
generater.title("Generater")
generater.geometry("450x300+200+200")

mainlabel=Label(generater).pack()

entryvar=IntVar()
entry=Entry(generater, textvariable=entryvar).pack()

check_a=BooleanVar()
check_A=BooleanVar()
check_0=BooleanVar()
checkBox_a=Checkbutton(generater, variable=check_a, text="a-z").pack()
checkBox_A=Checkbutton(generater, variable=check_A, text="A-Z").pack()
checkBox_0=Checkbutton(generater, variable=check_0, text="0-9").pack()

DoneButton=Button(generater, text="Done", command=done).pack()





generater.mainloop()

【问题讨论】:

  • 附带说明,不要将调用 pack() 的结果存储在变量中。此方法始终返回 None,而不是对小部件的引用。
  • 它不会创建它应该创建的文件。它会创建哪些文件?名字错了?错误的文件夹?

标签: python tkinter py2app platypus


【解决方案1】:

当您启动由 py2app 创建的应用程序时,当前工作目录将更改为应用程序包内的“Contents/Resources”文件夹。因为您的脚本会创建一个相对于当前工作目录的文件,所以它最终会出现在应用程序中。

(例如 myapp.app/Contents/Resources/b.txt)

【讨论】:

  • 我再次尝试了 py2app,我查看了应用程序包并在硬盘驱动器上搜索了“b.txt”,仍然一无所获
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 2019-03-23
  • 1970-01-01
  • 2021-05-06
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多