Python 如何将函数输出添加到文本文件中?

Python 如何将函数输出添加到文本文件中?,python,Python,我有这个功能来给我写一个文件: from tkinter import * import os import tkinter as tk def var_states(): text_file = open("logfile.txt", "a") text_file.write("USER: %s, Variable1: %d\n" % (os.getlogin(),var1.get())) text_file.close() var1 = IntVar()

我有这个功能来给我写一个文件:

from tkinter import *
import os
import tkinter as tk


 def var_states():
     text_file = open("logfile.txt", "a")
     text_file.write("USER: %s, Variable1: %d\n" % (os.getlogin(),var1.get()))
     text_file.close()

var1 = IntVar()
tk.Checkbutton(right_frame, text="sample text", variable=var1).grid(column = 1, row = 1, sticky = W)
如果打开.txt文件,输出为:USER:WindowsUser,示例文本

我在这里也有这个功能:

def func(value):
    p = Path(value)
    print(p)
通过单击按钮获取值:

popupMenu = tk.OptionMenu(left_frame, tkvar, *choices,command = func)
这只是tkinter中的一个下拉菜单,其中显示了目录列表

我的问题是,如何获得
func()
以用于
var\u状态
将值写入文件

以下是我尝试过的:

def var_states():
    text_file = open("logfile.txt", "a")
    text_file.write("USER: %s, Variable1: %d, Func_return: %s \n" % (os.getlogin(), var1.get(), func.get()))
    text_file.close()
以下是完整的代码:

from tkinter import *
import glob
import os
from PIL import Image, ImageTk, ImageGrab
import tkinter as tk
import pyautogui
import datetime
import time
from pathlib import Path

#date & time
now = datetime.datetime.now()

root = tk.Tk()
root.title("SIGN OFF")
root.minsize(840, 400)

# Frames
left_frame = tk.Frame()
right_frame = tk.Frame()

left_frame.pack(side="left", fill="both", expand=True)
right_frame.pack(side="right", fill="both", expand=True)

# Create a Tkinter variable
tkvar = tk.StringVar(root)

# Directory
directory = "C:/Users/label/Desktop/Sign off Project/sign off img"
choices = glob.glob(os.path.join(directory, "*.jpg"))
tkvar.set('...To Sign Off...') # set the default option

# On change dropdown callback.
def change_dropdown(*args):
    """ Updates label2 image. """
    imgpath = tkvar.get()
    img = Image.open(imgpath)
    img = img.resize((529,361))
    photo = ImageTk.PhotoImage(img)
    label2.image = photo
    label2.configure(image=photo)

def func(value):
    p = Path(value)
    print(p)

#Seperating widgets
choose_label = tk.Label(left_frame, text="Choose your sign off here:")
popupMenu = tk.OptionMenu(left_frame, tkvar, *choices,command = func)
display_label = label2 = tk.Label(left_frame, image=None)
open_button = tk.Button(left_frame, text="Open", command=change_dropdown)

choose_label.grid(row=1, column=1)
popupMenu.grid(row=2, column=1)
display_label.grid(row=3, column=1)
open_button.grid(row=4, column=1)







def user():
    tk.Label(right_frame, text= "User: ", font = 'Helvetica 18 bold').grid(column = 1, row = 0, sticky = W)
    user_input = os.getlogin()
    tk.Label(right_frame, text = user_input, font='Helvetica 18 bold').grid(column = 1, row = 0, sticky = N)


user()


def var_states():
    text_file = open("logfile.txt", "a")
    text_file.write("TIME: %s, USER: %s, One %d, Two %d, Three %d, Four %d, Five %d, Six %d, Seven %d, Eight %d, Nine %d, Ten %d, Eleven %d, Twelve %d\n" % (now,os.getlogin(), var1.get(), var2.get(), var3.get(), var4.get(), var5.get(), var6.get(), var7.get(), var8.get(), var9.get(), var10.get(), var11.get(), var12.get()))
    text_file.close()

#checkboxes
var1 = IntVar()
var2 = IntVar()
var3 = IntVar()
var4 = IntVar()
var5 = IntVar()
var6 = IntVar()
var7 = IntVar()
var8 = IntVar()
var9 = IntVar()
var10 = IntVar()
var11 = IntVar()
var12 = IntVar()

tk.Checkbutton(right_frame, text="Ingredients present in full (any allergens in bold with allergen warning if necessary)", variable=var1).grid(column = 1, row = 1, sticky = W)
tk.Checkbutton(right_frame, text="May Contain Statement.", variable=var2).grid(column = 1, row = 2, sticky = W)
tk.Checkbutton(right_frame, text="Cocoa Content (%).", variable=var3).grid(column = 1, row = 3, sticky = W)
tk.Checkbutton(right_frame, text="Vegetable fat in addition to Cocoa butter", variable=var4).grid(column = 1, row = 4, sticky = W)
tk.Checkbutton(right_frame, text="Instructions for Use.", variable=var5).grid(column = 1, row = 5, sticky = W)
tk.Checkbutton(right_frame, text="Additional warning statements (pitt/stone, hyperactivity etc)", variable=var6).grid(column = 1, row = 5, sticky = W)
tk.Checkbutton(right_frame, text="Nutritional Information Visible", variable=var7).grid(column = 1, row = 7, sticky = W)
tk.Checkbutton(right_frame, text="Storage Conditions", variable=var8).grid(column = 1, row = 8, sticky = W)
tk.Checkbutton(right_frame, text="Best Before & Batch Information", variable=var9).grid(column = 1, row = 9, sticky = W)
tk.Checkbutton(right_frame, text="Net Weight & Correct Font Size.", variable=var10).grid(column = 1, row = 10, sticky = W)
tk.Checkbutton(right_frame, text="Barcode - Inner", variable=var11).grid(column = 1, row = 11, sticky = W)
tk.Checkbutton(right_frame, text="Address & contact details correct", variable=var12).grid(column = 1, row = 12, sticky = W)




def save():

    var_states()


tk.Button(right_frame, text = "Save", command = save).grid(column = 1, row = 13, sticky = W)

root.mainloop()

用于存储路径的变量是
p
,因此如果要在
var\u states
函数中使用该变量,应更改行:

text_file.write("USER: %s, Variable1: %d, Func_return: %s \n" % (os.getlogin(), var1.get(), func.get()))


在使用
p
之前,请检查是否正在调用该函数,否则将出现
namererror
异常。

用于存储路径的变量是
p
,因此如果要在
var\u states
函数中使用该变量,应更改行:

text_file.write("USER: %s, Variable1: %d, Func_return: %s \n" % (os.getlogin(), var1.get(), func.get()))


在使用
p
之前,请检查是否正在调用该函数,否则将出现
namererror
异常。

您必须进行一些小更改,如下所示:

首先

p = None

def func(value):
    global p
    p = Path(value)
    print('req:', p)

def var_states():
    text_file = open("logfile.txt", "a")
    # code changed here
    text_file.write("USER: %s, Variable1: %d, Func_return: %s \n" % (os.getlogin(), var1.get(), p))
    text_file.close()

我运行了您的程序,执行此操作后,它工作正常。

您必须进行一些小更改,如下所示:

首先

p = None

def func(value):
    global p
    p = Path(value)
    print('req:', p)

def var_states():
    text_file = open("logfile.txt", "a")
    # code changed here
    text_file.write("USER: %s, Variable1: %d, Func_return: %s \n" % (os.getlogin(), var1.get(), p))
    text_file.close()

我运行了您的程序,执行此操作后,该程序运行良好。

您的问题并不是100%清楚。你是在问如何将一个函数的结果传递给另一个函数吗?@TomDalton是的,没错,先生!你问的不是100%清楚。你是在问如何将一个函数的结果传递给另一个函数吗?@TomDalton是的,没错,先生!请你解释一下密码好吗?不确定为什么将变量p添加到none并打印('req:'I已使用
None
初始化变量
p
,并将其声明为
global
。因此,当调用
None
函数时,会将其替换为实际值,因为
p
gobal
您可以从任何地方访问它。总体而言,代码看起来不错吗?从您的角度来看?只是想要老实说,它看起来有点笨拙。你可以把东西放入类和函数中,从而在代码中添加一些模块化。请你解释一下代码好吗?不知道为什么你要将变量p添加到none并打印出来('req:'I已使用
None
初始化变量
p
,并将其声明为
global
。因此,当调用
None
函数时,会将其替换为实际值,因为
p
gobal
您可以从任何地方访问它。总体而言,代码看起来不错吗?从您的角度来看?只是想要老实说,这看起来有点笨拙。你可以把东西放到类和函数中,从而在代码中增加一些模块化。