저는 Tkinter와 Python을 처음 접했습니다. Tkinter 프레임에 3 개의 버튼이 있습니다. 버튼 1은 open_csv_dialog()를 호출하고 파일 대화 상자를 열어 .csv 파일을 선택하고 경로를 반환합니다. 버튼 2는 save_destination_folder()를 호출하고 선호하는 디렉토리를 열고 경로를 반환하는 파일 대화 상자를 엽니 다.파이썬 3 - Tkinter 버튼 명령
내 문제는 filepaths 버튼 1 버튼 내가 시도 2.
을에서 반환해야합니다 버튼 3. 호출 modify_word_doc()와 함께입니다;
button3 = ttk.Button(root, text="Run", command=lambda: modify_word_doc(open_csv_dialog, save_destination_folder)).pack()
하지만 분명히 단지 원하지 않는 인 open_csv_dialog()와 save_destination_folder() 함수를 모두 다시 열 수있는 파일 대화 상자를 표시합니다. 이 두 함수에서 이미 반환 된 파일 경로를 사용하여 다른 파일 대화 상자에 의해 프롬프트되지 않고 modify_word_doc에 전달하고 싶습니다. 나는 또한 partial
을 사용하려고 시도했으나 잘못 사용하고 있거나 여전히 바람직하지 않은 결과를 낳고 있습니다.
나는 명령에 대한 Tkinter 문서를 읽었으며 가능한 대답을 찾았으므로 이전에이 질문에 답을 얻지 못하고 사과를 찾지 못해 사과드립니다.
import tkinter as tk
from tkinter import filedialog
from tkinter import ttk
import os
import csv
import docx
from functools import partial
root = tk.Tk()
def open_csv_dialog():
file_path = filedialog.askopenfilename(filetypes=(("Database files",
"*.csv"),("All files", "*.*")))
return file_path
def save_destination_folder():
file_path = filedialog.askdirectory()
return file_path
def modify_word_doc(data, location):
#data = open_csv_dialog()
#location = save_destination_folder()
#long code. takes .csv file path opens, reads and modifies word doc with
#the contents of the .csv, then saves the new word doc to the requested
#file path returned from save_destination_folder().
label = ttk.Label(root, text="Step 1 - Choose CSV File.",
font=LARGE_FONT)
label.pack(pady=10, padx=10)
button = ttk.Button(root, text="Choose CSV",
command= open_csv_dialog).pack()
label = ttk.Label(root,
text="Step 2 - Choose destination folder for your letters.",
font=LARGE_FONT)
label.pack(pady=10, padx=10)
button2 = ttk.Button(root, text="Choose Folder",
command=save_destination_folder).pack()
label = ttk.Label(root, text="Step 3 - Select Run.", font=LARGE_FONT)
label.pack(pady=10, padx=10)
button3 = ttk.Button(root, text="Run",
command=lambda: modify_word_doc(open_csv_dialog, save_destination_folder)).pack()
root.mainloop()
'(''''') 구문 오류 btw가 있습니다. –