在openpyxl GUI程序上出现多个错误

我正在python中使用openpyxl和tkinter制作一个excel GUI程序。 这是我的代码:

import openpyxl from tkinter import * from tkinter import Tk from tkinter.filedialog import askopenfilename from openpyxl.utils import get_column_letter, column_index_from_string root = Tk() root.configure(background='light green') root.geometry("500x500") root.wm_title("BananaCell") v1 = StringVar() v2 = StringVar() v3 = StringVar() v4 = StringVar() e1 = Entry(root, textvariable=v1) e1.insert(10,'ddd') e1.delete(0, END) e1.pack() e1.place(x=70, y=150) e = Entry(root) e.insert(10,"Sheet 1 Name: ") e.delete(0, END) e.pack() e.place(x=300, y=150) v1 = e.get() print(v1) def get_1(): print(v1) bf = Button(root, text="Enter", width=6, height=0, command=get_1) bf.pack() bf.place(x=15, y=147) def askForFileName1(): f1 = askopenfilename(title="Select Workbook 1") wb = openpyxl.load_workbook(str(f1)) def askForFileName2(): f2 = askopenfilename(title="Select Workbook 2") wb1 = openpyxl.load_workbook(str(f2)) b = Button(root, text="Workbook 1", width=12, height=2, command=askForFileName1) b.pack() b.place(x=100, y=100) b2 = Button(root, text="Workbook 2", width=12, height=2, command=askForFileName2) b2.pack() b2.place(x=300, y=100) mainloop() col1 = input('Column letter from Sheet 1 to compare from: ') col2 = input('Column letter from Sheet 2 to compare from: ') for (col, col_1) in zip(ws.iter_cols(min_col = column_index_from_string(col1), max_col=column_index_from_string(col1)), ws1.iter_cols(min_col = column_index_from_string(col2), max_col=column_index_from_string(col2))): for (cell, cell_1) in zip(col, col_1): if cell.value != cell_1.value and cell.row == cell_1.row: print('Row ' + str(cell.row) + ' ' + str(cell.value) + ' is not equal to ' + str(cell_1.value) + ' ' + 'Row ' + str(cell_1.row)) exit_if = input('Press x to exit when you\'re ready: ') 

我有两个问题:A是我需要variablesf1f2是全局的,而B是当我按下程序中的Enterbutton时,它打印一个空格。 谁能解决这些问题吗? 任何帮助是伟大的

对于问题A:分配任何值的function,即

 f1,f2=0,0 

并使其成为全球性的内部function

 def ask_for_filename(): global f1 #or global f2 whatever you want 

每次你使用这些variables的外部function,他们给你你想要的结果不要忘记让他们全球内部function,如果你想他们修改为全球性的:

 global f1 or f2