91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么實現一個對話框類

發布時間:2021-07-05 16:06:41 來源:億速云 閱讀:407 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關Python中怎么實現一個對話框類,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

構建一個修改文件名對話框。

# 構建頂層窗口作為對話框rename_dlg = Toplevel(takefocus=True)# 指定窗口標題rename_dlg.title('Rename')# 禁止窗口尺寸調整rename_dlg.resizable(width=False, height=False)# 構建Frame對象以容納Label和Entry對象# 使用Frame可以分別調整Label/Entry區域和下面的按鈕區域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)# 構建Frame對象以容納OK和Cancel按鈕btn_frame = Frame(rename_dlg)btn_frame.grid(row=1, column=0, sticky='e')# 通過labmda表達式傳遞構建按鈕控件時的對話框控件,路徑和文件名信息# 修改后的文件名要在按下【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接收鼠標和鍵盤事件,這是實現模態對話框的關鍵。rename_dlg.grab_set()# 使對話框相對于root窗口居中center_window(rename_dlg, root)# 啟動對話框主循環rename_dlg.mainloop()# 銷毀對話框窗口rename_dlg.destroy()

如果觀察代碼可以知道,從第7行到第27行為止是FileBrowser的實際需要的功能,其他的代碼則是構建任何對話框都需要的處理。以下用用一個類將這部分功能獨立出來:

class Dialog(Toplevel):    def __init__(self, ref, title):        Toplevel.__init__(self, takefocus=True)        self.ref = ref        # 指定窗口標題        self.title(title)        # 禁止窗口尺寸調整        self.resizable(width=False, height=False)        self.create_widgets()        # 限定rename_dlg接收鼠標和鍵盤事件,這是實現模態對話框的關鍵。        self.grab_set()        # 使對話框相對于root窗口居中        center_window(self, ref)        # 啟動對話框主循環        self.mainloop()
    def create_widgets(self):        pass

當需要構建自己的對話框時只要繼承Dialog可并實現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):        # 構建Frame對象以容納Label和Entry對象        # 使用Frame可以分別調整Label/Entry區域和下面的按鈕區域        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)        # 構建Frame對象以容納OK和Cancel按鈕        btn_frame = Frame(self)        btn_frame.grid(row=1, column=0, sticky='e')        # 通過labmda表達式傳遞構建按鈕控件時的對話框控件,路徑和文件名信息        # 修改后的文件名要在按下【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相關的部分了。將這部分功能封裝成類的另一個好處是使用對話框的代碼變得簡單了:

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中怎么實現一個對話框類了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

睢宁县| 井冈山市| SHOW| 阜城县| 营山县| 宁都县| 旬邑县| 石柱| 万州区| 昭平县| 襄城县| 鹿泉市| 兰州市| 嘉黎县| 南丰县| 略阳县| 霍邱县| 资阳市| 南充市| 墨竹工卡县| 厦门市| 扬州市| 武夷山市| 新化县| 东城区| 潞西市| 麦盖提县| 独山县| 平乐县| 威海市| 沿河| 新野县| 平罗县| 东阿县| 咸阳市| 永州市| 化德县| 湘阴县| 榆中县| 滨州市| 延川县|