Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python打印列表对象[0x01FEAD50处的tkinter.StringVar对象],但不打印列表*tkinter中的项目*_Python_List_User Interface_Tkinter - Fatal编程技术网

Python打印列表对象[0x01FEAD50处的tkinter.StringVar对象],但不打印列表*tkinter中的项目*

Python打印列表对象[0x01FEAD50处的tkinter.StringVar对象],但不打印列表*tkinter中的项目*,python,list,user-interface,tkinter,Python,List,User Interface,Tkinter,我正在尝试创建一个GUI,它将能够使用MD5散列来监控文件的完整性(实际的更新监控日志可以在命令提示符中) 我让最初的命令行程序运行得很好,但在使用tkinter将其转换为基于GUI的版本时遇到了问题 我使用GUI创建了一个要在“addFiles”函数中监视的文件列表,但当我尝试将该列表传递给“checkForIntegrity”函数(或使用该函数中的testprint(listOfFiles)代码打印列表)时,我得到的只是[tx01fead50处的tkinter.StringVar对象],但是

我正在尝试创建一个GUI,它将能够使用MD5散列来监控文件的完整性(实际的更新监控日志可以在命令提示符中)

我让最初的命令行程序运行得很好,但在使用
tkinter
将其转换为基于GUI的版本时遇到了问题

我使用GUI创建了一个要在“
addFiles
”函数中监视的文件列表,但当我尝试将该列表传递给“
checkForIntegrity
”函数(或使用该函数中的test
print(listOfFiles)
代码打印列表)时,我得到的只是
[tx01fead50处的tkinter.StringVar对象]
,但是不要得到实际的列表

我到处寻找答案,并尝试在不同的位置使用“
listOfFiles.get()
”的各种实现,但都没有成功

我不知道为什么我只得到实际的列表对象,而没有列出项目,我的代码如下

提前谢谢大家

编辑:我的“GUI()”函数创建了一个窗口,询问用户希望监视多少文件,并将其传递给“addFiles()”函数,该函数允许输入用户指定的文件量。我需要能够通过列表将GUI中指定的文件传递给程序。再次感谢

import hashlib
import time
from tkinter import *

def main():  
    GUI()

def GUI():
    window = Tk()
    window.title("Integrity Checker")
    frame1 = Frame(window)
    frame1.pack()
    label1 = Label(frame1, text = "***Proof Of Concept Program That Monitors the Integriry of Files***")
    label1.grid(row = 1, column = 1)

    frame2 = Frame(window)
    frame2.pack()
    getNumberOfFiles = Label(frame2, text = "Insert Number of Files You Would Like to Check: ")
    getNumberOfFiles.grid(row = 2, column = 1)
    numberOfFiles = IntVar()
    NumberOfFilesOption = Entry(frame2, textvariable = numberOfFiles)
    NumberOfFilesOption.grid(row = 2, column = 2)
    button = Button(frame2, text = "OK", command = lambda : addFiles(numberOfFiles))
    button.grid(row = 2, column = 3)


    window.mainloop()


def addFiles(numberOfFiles):

    listOfFiles = []    

    window = Tk()
    window.title("Add Files")
    frame1 = Frame(window)
    frame1.pack()
    label1 = Label(frame1, text = "***Select The Files You Want To Monitor***")
    label1.grid(row = 1, column = 1)


    for i in range (numberOfFiles.get()):
        AddFile = Label(frame1, text = "Add File:")
        AddFile.grid(row = (i + 3), column = 1)
        FileName = StringVar()
        FileNameOption = Entry(frame1, textvariable = FileName)
        FileNameOption.grid(row = (i + 3), column = 2)
        button = Button(frame1, text = "OK", command = lambda : listOfFiles.append(FileName))
        button.grid(row = (i + 3), column = 3)
    button2 = Button(frame1, text = "Done", command = lambda : checkforINTEGRITY(numberOfFiles, listOfFiles))
    button2.grid(row = (i + 4), column = 2)

    window.mainloop()


def checkforINTEGRITY(numberOfFiles, listOfFiles):

    #Number = numberOfFiles.get()
    #listOfFiles = []
    #count = 0
    #numberOfFiles = eval(input("How many files would you like to monitor?: "))
    #while count < Number:
     #   filename = input("Enter the name of the file you would like to check: ")
     #   count += 1
     #   listOfFiles.append(filename)

    print(listOfFiles)
    i = 0
    originalList = []
    for file in listOfFiles:
        original_md5 = hashlib.md5(open(listOfFiles[i],'rb').read()).hexdigest()
        originalList.append(original_md5)        
        i += 1
    print(originalList)

    while True:

        i = 0
        while i < Number:
            md5_returned = hashlib.md5(open(listOfFiles[i],'rb').read()).hexdigest()

            print(md5_returned)

            if originalList[i] == md5_returned:
                print("The file", listOfFiles[i], "has not changed")
            else:
                print("The file", listOfFiles[i], "has been modified!")
            i += 1

        time.sleep(5)

main()
导入hashlib
导入时间
从tkinter进口*
def main():
GUI()
def GUI():
window=Tk()
窗口标题(“完整性检查”)
frame1=框架(窗口)
frame1.pack()
label1=Label(frame1,text=“***监控文件完整性的概念验证程序***”)
标签1.网格(行=1,列=1)
frame2=框架(窗口)
frame2.pack()
getNumberOfFiles=标签(frame2,text=“插入要检查的文件数:”)
getNumberOfFiles.grid(行=2,列=1)
numberOfFiles=IntVar()
NumberOfFilesOption=Entry(frame2,textvariable=numberOfFiles)
numberOfFileOption.grid(行=2,列=2)
button=按钮(frame2,text=“OK”,command=lambda:addFiles(numberOfFiles))
button.grid(行=2,列=3)
window.mainloop()
def addFiles(numberOfFiles):
listOfFiles=[]
window=Tk()
窗口标题(“添加文件”)
frame1=框架(窗口)
frame1.pack()
label1=Label(frame1,text=“***选择要监视的文件***”)
标签1.网格(行=1,列=1)
对于范围内的i(numberOfFiles.get()):
AddFile=标签(frame1,text=“添加文件:”)
AddFile.grid(行=(i+3),列=1)
FileName=StringVar()
FileNameOption=Entry(frame1,textvariable=FileName)
grid(行=(i+3),列=2)
button=button(frame1,text=“OK”,command=lambda:listOfFiles.append(文件名))
网格(行=(i+3),列=3)
button2=按钮(frame1,text=“Done”,command=lambda:checkforINTEGRITY(numberOfFiles,listOfFiles))
按钮2.网格(行=(i+4),列=2)
window.mainloop()
def检查完整性(文件数、文件列表):
#Number=numberOfFiles.get()
#listOfFiles=[]
#计数=0
#numberOfFiles=eval(输入(“您希望监视多少文件?”:”)
#当计数<数字时:
#filename=input(“输入要检查的文件名:”)
#计数+=1
#追加(文件名)
打印(列表文件)
i=0
原始列表=[]
对于listOfFiles中的文件:
original_md5=hashlib.md5(open(listOfFiles[i],'rb').read()).hexdigest()
原始列表。附加(原始文档)
i+=1
印刷品(原件)
尽管如此:
i=0
而我<数字:
md5_returned=hashlib.md5(open(listOfFiles[i],'rb').read()).hexdigest()
打印(md5_返回)
如果原始列表[i]==md5\u返回:
打印(“文件”,列表文件[i],“未更改”)
其他:
打印(“文件”,listOfFiles[i],“已修改!”)
i+=1
时间。睡眠(5)
main()

看起来您想调用
filename选项上的
get
方法

button = Button(frame1, text = "OK", command = lambda : listOfFiles.append(FileNameOption.get()))

通过此更改,我能够在
listOfFiles

中获取字符串列表,看起来您想调用
filename选项上的
get
方法:

button = Button(frame1, text = "OK", command = lambda : listOfFiles.append(FileNameOption.get()))

通过这个更改,我可以在
listOfFiles

中获得字符串列表,非常感谢,这解决了所有问题。我的列表只在每个索引中添加一个文件的名称,不管添加多少文件,但这是今天的项目。再次感谢。非常感谢,这解决了所有问题。我的列表只在每个索引中添加一个文件的名称,不管添加多少文件,但这是今天的项目。再次感谢。