python 使用 entry.get()不能获取到输入的文件夹路径
研究了一天一夜了。都不知道改怎么办了。
如以下代码所示,我想将获取到的路径赋值给pathjq变量和pathxq变量,但是都失败了,导致compare函数不能运行。
import tkinter
from tkinter import filedialog
import xlrd
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
import openpyxl
import os
window = tkinter.Tk()
window.title = ("数据对比工具")
window.geometry('500x300')
def get_path1():
path1 = filedialog.askdirectory(title='请选择文件夹路径')
entry_text1.set(path1)
return (path1)
def get_path2():
path2 = filedialog.askdirectory(title='请选择文件夹路径')
entry_text2.set(path2)
return (path2)
entry_text1 = tkinter.StringVar()
entry = tkinter.Entry(window,textvariable=entry_text1,state='readonly')
entry.place(x=80,y=100,width=250)
entry_text2 = tkinter.StringVar()
entry = tkinter.Entry(window,textvariable=entry_text2,state='readonly')
entry.place(x=80,y=160,width= 250)
jqget = tkinter.Button(window,text='点此选择基期表\n所在文件夹',bg='#45b1e8',width=12,
height=2,command=get_path1)
jqget.place(x = 340,y=85)
xqget = tkinter.Button(window,text='点此选择现期表\n所在文件夹',bg='#45b1e8',width=12,
height=2,command=get_path2)
xqget.place(x=340,y=145)
# 就在此处,谢谢。
pathjq = entry_text1.get()+"\\"
pathxq = entry_text2.get()+"\\"
wx = tkinter.Label(window,text=pathjq)
wx.place(x= 100, y=250)
def compare(path1,path2):
for filename1 in os.listdir(path1):
for filename2 in os.listdir(path2):
if filename1.endswith((".xls",".xlsx")) and filename2.endswith((".xls",".xlsx")) and filename1[0:12] == filename2[0:12]:
wbjq = load_workbook(path1+filename1,data_only=True)
wbxq = load_workbook(path2+filename2,data_only=True)
wbdb = load_workbook(path2+filename2,data_only=True)
wsjq = wbjq.active
wsxq = wbxq.active
wsdb = wbdb.active
rows = wsdb.max_row
cols = wsdb.max_column
red_fill = PatternFill("solid", fgColor="FF0000")
yellow_fill = PatternFill("solid", fgColor="ffff00")
for i in range(1,rows + 1):
for j in range(1,cols + 1):
if (wsjq.cell(i,j).value) != (wsxq.cell(i,j).value):
wsdb.cell(i,j).value = "{} --> {}".format((wsjq.cell(i,j).value),(wsxq.cell(i,j).value))
if wsjq.cell(i,j).value == 0:
wsdb.cell(i,j).fill = red_fill
else:
try:
int(float(wsxq.cell(i,j).value))
int(float(wsjq.cell(i,j).value))
except ValueError as e:
pass
else:
rate = (wsxq.cell(i,j).value)/(wsjq.cell(i,j).value)-1
if rate >= 0.2 or rate <= -0.2:
wsdb.cell(i,j).fill = yellow_fill
if rate >= 0.5 or rate <= -0.5:
wsdb.cell(i,j).fill = red_fill
if os.path.exists(path2 + filename2 + 'f.xlsx'):
pass
else:
wbdb.save(path2 + filename2 + '核对完成.xlsx')
cpbegin = tkinter.Button(window,text='开始比较',bg='#45b1e8',width=10,
height=1,command=(compare(pathjq,pathxq)))
cpbegin.place(x=200,y=200)
window.mainloop()