使用tkinters文件对话框打开和保存文件时遇到了几个问题。这是我遇到的问题的一小段复制代码。
import tkinter as tk
from tkinter import filedialog
from openpyxl import load_workbook
def open_file():
tk.filedialog.askopenfilename(initialdir='.', title='Select File', filetypes=(('Excel files', ('*.xl*', '*.xlsx', '*.xlsm', '*.xlsb', '.xlam', '*.xltx', '*.xltm', '*.xls', '*.xla', '*.xlt', '*.xlm', '*.xlw')), ('Text Files', ('*.txt', '*.csv')), ('all files', '*.*')))
def save_file():
tk.filedialog.asksaveasfilename(initialdir='.', title='Save File', filetypes=(('Excel files', ('*.xl*', '*.xlsx', '*.xlsm', '*.xlsb', '.xlam', '*.xltx', '*.xltm', '*.xls', '*.xla', '*.xlt', '*.xlm', '*.xlw')), ('Text Files', ('*.txt', '*.csv')), ('all files', '*.*')))
wb = load_workbook('test.xlsx')
wb.save('new_name' + '.xlsx')
class App(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
open_btn = tk.Button(master, text='Open', command=open_file)
save_btn = tk.Button(master, text='Save', command=save_file)
open_btn.pack()
save_btn.pack()
if __name__ == "__main__":
root = tk.Tk()
app = App(root)
app.mainloop()
此代码有效,但不是我想要的方式。当我单击“打开”按钮时,将弹出“文件对话框”窗口,但实际上无法打开任何文件。如果单击文件,然后单击打开,则文件对话框窗口立即关闭。如果我只是双击一个文件,也会发生同样的事情。但是,我可以右键单击一个文件,然后选择“打开”即可。如何获得允许我打开文件的前两种方法?
至于保存功能,它可以工作,但也不像我希望的那样。将打开文件对话框,但用户无法自己命名文件。他们可以输入一些内容,然后单击“保存”,但是实际上并不会使用该名称来命名文件。相反,它将新文件命名为“ new_name”,因为这就是我的功能。我的印象是,它将在文件对话框窗口中默认为“ new_name”,然后允许用户根据需要编辑名称。有什么方法可以实现我想要的?