GUI 파일과 GUI 파일에 두 개의 파이썬 파일 (하나는 GUI 용이고 다른 하나는 함수 용)을 사용하여 Python 응용 프로그램을 작성하고 있습니다. 두 번째 파일 (browse_file)의 함수는 다른 함수 (exl_cols)를 호출하지만 python은이 함수를 호출하는 것을 허용하지 않고이 오류를 제공합니다 (이벤트 객체에는 exl_cols 속성이 없습니다) AttributeError : '이벤트'객체에 'exl_cols'속성이 없습니다.
GUI
from Browser import Browse
from tkinter import *
import tkinter as tk
class DA(Frame):
#
# -------Initiating function-----#
def __init__(self, master):
Frame.__init__(self, master)
self.grid()
self.create_widgets()
def create_widgets(self):
#
# -------Buttons-------#
#
# -------Create browse button-------#
self.button1 = tk.Button(text="Browse", width=16)
self.button1.bind("<ButtonRelease-1>", Browse.browse_file)
self.button1.grid(column=1, row=4, sticky='NEW')
Window = Tk()
Window.title("DA Generator")
Window.geometry("600x250")
DATool = DA(Window)
Window.mainloop()
브라우저
from tkinter import *
from tkinter import filedialog
import tkinter as tk
import pandas as pd
import os
#
# ---------Excel File Browsing---------#
class Browse:
#
# -------Browse for input file-----#
def browse_file(self):
global i
global cols
self.i = tk.StringVar()
self.filename = filedialog.askopenfile("r")
self.i.set(self.filename.name)
self.k = self.filename.name
self.label3 = tk.Label(text=self.k, bg="White")
self.label3.grid(column=0, row=4)
self.direc = os.path.dirname(self.i.get())
self.db = pd.read_excel(io=self.i.get())
self.var = tk.StringVar()
print(list(self.db.columns))
if list(self.db.columns) is not None:
print('excel has columns')
self.cols = (list(self.db.columns))
self.exl_cols(self.cols)
return self.i
#
# -------Get excel columns-------#
def exl_cols(self, x ,*args):
self.x = tk.StringVar()
print(tuple(x))
y = tuple(x)
global varx
self.varx = tk.StringVar()
self.varx.set('Excel Columns')
self.varx.trace("w", self.mapping)
cols_menu = tk.OptionMenu(Tk(useTk=0).master, self.varx, *y)
cols_menu.grid(column=1, row=5, sticky='NEW')
return self.varx
self.button1 = tk.Button(..., command=Browse().browse_file). If you do that, you don't need to support the
이벤트, 그것은 일반적으로 실행 (self.cols) 실행되지 않은 browse_file 함수 아래에있는 이벤트 개체의 오류를 제공합니다. exl_cols – MEL46@ MEL46 : 예, 인스턴스를 만들지 않으므로 오류가 발생합니다.이 함수의 첫 번째 인수는 'self '이므로 바인딩이 함수를 호출 할 때 이벤트는'self'로 전달되므로'Event 객체에는 속성이 없습니다. exl_cols' –
@ MEL46 : 답변을 업데이트했습니다. –