python tkinter 封装成类函数

要把 tkinter 界面写成类函数放在一个模块里(easy_excel)供主程序process_compare调用。没有写过类,类下面的各个def
函数要如何串起来呢?
画布上一个processbar 展示文件读取进度,两个button start 和quit , quit,start button不显示. start button 的command
写在了主程序里面,ob.update_progress(files, command_bt)报错。
欢迎指教。

class WindowManager():#https://www.5axxw.com/questions/content/fii6kx

# initializing the root

def __init__(self):

self.root = tkinter.Tk()

self.root.title('Step 1 of 4')

self.root.geometry('300x280+600+300')

#self.root.title(title) #,title,geometry

#self.root.geometry(geometry)

self.root.withdraw()

# creating the progress bar and packing it to the root

def create_progress_bar(self):

self.root.wm_deiconify()

self.progress_bar = ttk.Progressbar(self.root, length = 200, mode = 'determinate', maximum = 100)

self.progress_bar.pack(padx=10,pady=20)

# function to start the mainloop

def start_application(self):

self.root.mainloop()

# updating the progress bar from the background thread

def update_progress(self, files, command_bt):

self.button_start(command_bt)

self.start_application()

self.progress_bar['value'] += 100/len(files)

print('percent: {:.2%}'.format(self.progress_bar['value']/100))

self.progress_bar.update() # 更新画面

self.button_quit()

# closing the root function

def close(self):

self.root.destroy()

def button_start(self,command_bt):

self.start = ttk.Button(self.root, text="Start", command = command_bt)

self.start.pack(pady=10)

def button_quit(self):

self.quit = ttk.Button(self.root, text="Quit", command = self.close())

self.quit.pack(pady=20)

#self.root.mainloop() #启动应用程序,启动消息循环

ob = WindowManager()

ob.update_progress(files, command_bt)# 调用对象的函数

下面是主程序对progressbar 和start button 的调用

    EE.WindowManager().creat_progress_bar()

def start():

global mergeSingleV,mergeStableV,mergeSingleM,mergeSingleMStep,mergeStableM,mergeOther

mergeSingleV = mergeStableV = mergeSingleM = mergeSingleMStep = mergeStableM = mergeOther = EE.create_df_type()

# mergeSingleV = EE.create_df_type()

# mergeStableV = EE.create_df_type()

# mergeSingleM = EE.create_df_type()

# mergeSingleMStep = EE.create_df_type()

# mergeStableM = EE.create_df_type()

# mergeOther = EE.create_df_type()

mergeSingleV = mergeStableV = mergeSingleM = mergeSingleMStep = mergeStableM = mergeOther = EE.create_df_type()

for i in range(0,len(files)):

print(files[i])

tracepath = os.path.join(tracedir,files[i])

data = pd.read_csv(tracepath,index_col= False)

data['Filename'] = files[i]

data = data.merge(configP[['Par','AnalyClass']],on ='Par', how='left')

data = data.merge(configS[['Par','Step','AnalyClass']], on=['Par','Step'],how='left') # AnalyClass_x, AnalyClass_y

data['Class'] = np.where(data['AnalyClass_x'].notnull(), data['AnalyClass_x'], data['AnalyClass_y'])# Bug here AnalyClass_y failed

singleV = data[data['Class']==1].drop(['AnalyClass_x','AnalyClass_y'],axis=1) # only ok4 file# na 'Parameter'

stableV = data[data['Class']==2].drop(['AnalyClass_x','AnalyClass_y'],axis=1) # dplyr::filter(data, class==2)[,1:5]

singleM = data[data['Class']==3].drop(['AnalyClass_x','AnalyClass_y'],axis=1) #,'Parameter'

singleMStep = data[data['Class']==4].drop(['AnalyClass_x','AnalyClass_y'],axis=1) #?? 空

stableM = data[data['Class']==5].drop(['AnalyClass_x','AnalyClass_y'],axis=1)

other = data[data['Class'].isnull()].drop(['AnalyClass_x','AnalyClass_y'],axis=1)

mergeSingleV = mergeSingleV.append(singleV) # <- rbind(mergeSingleV,singleV)# cbind() 把矩阵横向合并成一个大矩阵(列方式),而rbind()是纵向合并(行方式)。

mergeSingleV[['Step','Interval']] = mergeSingleV[['Step','Interval']].astype(float)

mergeStableV = mergeStableV.append(stableV) #keep data width and data columns the same for appending

mergeSingleM = mergeSingleM.append(singleM) #Filename

mergeSingleMStep = mergeSingleMStep.append(singleMStep)# Last column:Filename not Class

mergeStableM = mergeStableM.append(stableM)

mergeOther = mergeOther.append(other)

EE.WindowManager().update_progress(files, start)

# pb['value'] += 100/len(files)

# print('percent: {:.2%}'.format(pb['value']/100))

# pb.update()

EE.WindowManager().button_start(start)

EE.WindowManager().button_quit()

python tkinter 封装成类函数

以上是 python tkinter 封装成类函数 的全部内容, 来源链接: utcz.com/p/938235.html

回到顶部