アイコンはPythonスクリプトを起動しますが、.txtを保存しません。

アイコンはPythonスクリプトを起動しますが、.txtを保存しません。

tkinterを使って簡単なプログラムを作成しました。 piriquita.pyをクリックして実行するか、端末を介して実行するか、log_piriquita.txデータがない場合は作成され、すでに存在する場合は追加されます。事実は、.txtファイルが作成され、データが保存されることです。

コードは次のとおりです。

#!/usr/bin/python3
#17.10.2019 terminado 18.10.2019
#programa para cálculos da Piriquita


from tkinter import*
from datetime import date

janela = Tk(className='piriquita')

def calcular():
    print("calcular")

d = float(dose.get())
p = float(peso.get())
c = float(conc.get())

v = d*p/c

lbl_resultado['text'] = round(v, 1)

data_atual = date.today()
data_normal = data_atual.strftime('%d/%m/%Y')

f = open('log_piriquita.txt', 'a+')
f.write(f'{data_normal}: Dose {d}, peso {p}, conc {c} = {v:.1f}\n')
f.close()

lbl_dose = Label(janela, text='Dose (mg)', font=(None, 15))
lbl_dose.place(x=10, y= 20)
dose = Entry(janela, width="6", font=(None, 15))
dose.place(x=130, y=20)

lbl_peso = Label(janela, text='Peso (kg)', font=(None, 15))
lbl_peso.place(x=10, y= 60)
peso = Entry(janela, width="6", font=(None, 15))
peso.place(x=130, y=60)

lbl_conc = Label(janela, text='Conc.(mg)', font=(None, 15))
lbl_conc.place(x=10, y= 100)
conc = Entry(janela, width="6", font=(None, 15))
conc.place(x=130, y=100)

bt = Button(janela, text="Calcular", width=5, command = calcular,
font=(None, 15), fg='purple') 
bt.place(x=80, y=140)

lbl_resul = Label(janela, text="Resultado", fg="red", font=(None, 22))
lbl_resul.place(x=10, y=200)
lbl_resultado = Label(janela, text="0", fg="red", font=(None, 22, 
'bold'))
lbl_resultado.place(x=190, y=200)

janela.geometry("300x250+300+300")

janela.title("Piriquita")

janela.mainloop()

その後、実行可能なアイコンを作成しました。

[Desktop Entry]
Type=Application
Terminal=false
Name=Piriquita
Exec=/home/js/Coding/Atom/Piriquita/piriquita.py
Icon=/home/js/Coding/Atom/Piriquita/piriquita1.png
StartupWMClass=piriquita

みんな大丈夫です。うまく動作しますが、piriquita.pyスクリプトのようにlog_piriquita.txtを生成しません。私は何を見逃していますか?

私はミント19を使用しています。 Python 3.6

よろしくお願いします。

ベストアンサー1

スクリプトの実行時に現在のディレクトリは何ですか?ここにファイルが必要です(おそらくホームディレクトリ)。コードでファイルを開くときに絶対パスを指定するか、次を使用する必要があります。Path指示する.desktop でアプリケーションを実行するときの作業ディレクトリを設定します。

おすすめ記事