我有 2 個功能(上傳和計算):第一個打開檔案并寫入其名稱(使用按鈕);第二個應該使用這個檔案中的資料(excel檔案,按下按鈕后也會啟動)。第一部分運行良好,但第二部分我不明白如何從第一個函式(獲取檔案)獲取檔案名以在第二個函式中作業(處理檔案中的資料)。
import tkinter as tk
from tkinter import Label, Pack, filedialog
from tkinter.constants import CENTER, LEFT
from tkinter.filedialog import askopenfilename
from pathlib import Path
from openpyxl import Workbook
import os
global filename
def Upload():
filename = filedialog.askopenfilename()
filepath=filename
path=Path(filepath)
#print(path.name)
#вставить проверку расширения файла
label2 = Label(text=path.name, font="Arial 17", justify=LEFT)
label2.place(relx=0.35, rely=.13)
#print('Selected:', filename)
return(path.name)
def Calc():
workbook = load_workbook(filename=path.name)
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()
button1 = tk.Button(text='Open File',command=Upload, bg='purple',fg='white')
button1.place (relx = 0.5, rely = 0.5, anchor=CENTER)
button2 = tk.Button(text='Calculate',command=Calc, bg='purple',fg='white')
button2.place (relx = 0.5, rely = 0.6, anchor=CENTER)
label1 = Label(text= 'Выбраный файл:', fg="#eee", bg="#333")
label1.place(relx = 0.5, y=20, anchor=CENTER)
canvas1.create_window(150, 150, window=button1)
root.mainloop()
uj5u.com熱心網友回復:
嘗試將變數路徑設為全域:
def Upload():
global path
filename = filedialog.askopenfilename()
filepath=filename
path=Path(filepath)
#print(path.name)
#вставить проверку расширения файла
label2 = Label(text=path.name, font="Arial 17", justify=LEFT)
label2.place(relx=0.35, rely=.13)
#print('Selected:', filename)
return(path.name)
def Calc():
global path
workbook = load_workbook(filename=path.name)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364251.html
