這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Python中怎么實現(xiàn)一個對話框類,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)專注于田陽網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供田陽營銷型網(wǎng)站建設(shè),田陽網(wǎng)站制作、田陽網(wǎng)頁設(shè)計、田陽網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造田陽網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供田陽網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
構(gòu)建一個修改文件名對話框。
# 構(gòu)建頂層窗口作為對話框rename_dlg = Toplevel(takefocus=True)# 指定窗口標(biāo)題rename_dlg.title('Rename')# 禁止窗口尺寸調(diào)整rename_dlg.resizable(width=False, height=False)# 構(gòu)建Frame對象以容納Label和Entry對象# 使用Frame可以分別調(diào)整Label/Entry區(qū)域和下面的按鈕區(qū)域fn_frame = Frame(rename_dlg)fn_frame.grid(row=0,column=0)Label(fn_frame, text='File Name:').grid(row=0, column=0)fn_var = StringVar()fn_var.set(fn)fn_entry = Entry(fn_frame, textvariable=fn_var)fn_entry.grid(row=0, column=1)# 構(gòu)建Frame對象以容納OK和Cancel按鈕btn_frame = Frame(rename_dlg)btn_frame.grid(row=1, column=0, sticky='e')# 通過labmda表達(dá)式傳遞構(gòu)建按鈕控件時的對話框控件,路徑和文件名信息# 修改后的文件名要在按下【OK】按鈕是通過fn_var.get獲取。ok_btn = Button(btn_frame, text='OK', command=(lambda w=rename_dlg,p=path,s=fn: rename_ok(w,p,s,fn_var.get())))ok_btn.grid(row=0, column=0)# 取消按鈕直接銷毀窗口對象cancel_btn=Button(btn_frame, text='Cancel', command=rename_dlg.destroy)cancel_btn.grid(row=0, column=1)# 限定rename_dlg接收鼠標(biāo)和鍵盤事件,這是實現(xiàn)模態(tài)對話框的關(guān)鍵。rename_dlg.grab_set()# 使對話框相對于root窗口居中center_window(rename_dlg, root)# 啟動對話框主循環(huán)rename_dlg.mainloop()# 銷毀對話框窗口rename_dlg.destroy()
如果觀察代碼可以知道,從第7行到第27行為止是FileBrowser的實際需要的功能,其他的代碼則是構(gòu)建任何對話框都需要的處理。以下用用一個類將這部分功能獨立出來:
class Dialog(Toplevel):
def __init__(self, ref, title):
Toplevel.__init__(self, takefocus=True)
self.ref = ref
# 指定窗口標(biāo)題
self.title(title)
# 禁止窗口尺寸調(diào)整
self.resizable(width=False, height=False)
self.create_widgets()
# 限定rename_dlg接收鼠標(biāo)和鍵盤事件,這是實現(xiàn)模態(tài)對話框的關(guān)鍵。
self.grab_set()
# 使對話框相對于root窗口居中
center_window(self, ref)
# 啟動對話框主循環(huán)
self.mainloop()
def create_widgets(self): pass
當(dāng)需要構(gòu)建自己的對話框時只要繼承Dialog可并實現(xiàn)create_widgets方法即可:
class RenameDialog(Dialog):
def __init__(self, file_list, path, fn):
self.path = path
self.fn = fn
self.fn_var = StringVar()
self.fn_var.set(self.fn)
Dialog.__init__(self, file_list.winfo_toplevel(), 'Rename File')
# 更新文件列表
file_list.select_node(None)
def create_widgets(self): # 構(gòu)建Frame對象以容納Label和Entry對象 # 使用Frame可以分別調(diào)整Label/Entry區(qū)域和下面的按鈕區(qū)域 fn_frame = Frame(self) fn_frame.grid(row=0, column=0) Label(fn_frame, text='File Name:').grid(row=0, column=0) fn_entry = Entry(fn_frame, textvariable=self.fn_var) fn_entry.grid(row=0, column=1) # 構(gòu)建Frame對象以容納OK和Cancel按鈕 btn_frame = Frame(self) btn_frame.grid(row=1, column=0, sticky='e') # 通過labmda表達(dá)式傳遞構(gòu)建按鈕控件時的對話框控件,路徑和文件名信息 # 修改后的文件名要在按下【OK】按鈕是通過fn_var.get獲取。 ok_btn = Button(btn_frame, text='OK', command=self.__rename) ok_btn.grid(row=0, column=0) # 取消按鈕直接銷毀窗口對象 cancel_btn = Button(btn_frame, text='Cancel', command=self.destroy) cancel_btn.grid(row=0, column=1)
可以看到,RenameDlg類中只剩下FileBrowser相關(guān)的部分了。將這部分功能封裝成類的另一個好處是使用對話框的代碼變得簡單了:
def rename_current(self): path, selections = self.selected_files() if path: for fn in selections: dlg = RenameDialog(self, path, fn) self.select_node(None)
上述就是小編為大家分享的Python中怎么實現(xiàn)一個對話框類了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章名稱:Python中怎么實現(xiàn)一個對話框類
網(wǎng)頁路徑:http://muchs.cn/article16/igeodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站改版、域名注冊、響應(yīng)式網(wǎng)站、服務(wù)器托管、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)