亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

岳阳县| 濮阳县| 海城市| 永靖县| 大庆市| 萨迦县| 方山县| 赣榆县| 惠州市| 赤城县| 时尚| 平陆县| 方正县| 剑河县| 喀喇沁旗| 长沙市| 东明县| 红原县| 大新县| 兴宁市| 萍乡市| 遂昌县| 广河县| 封丘县| 陵川县| 西安市| 年辖:市辖区| 平顺县| 连平县| 江达县| 逊克县| 青河县| 济阳县| 息烽县| 吕梁市| 新余市| 罗甸县| 宜兰县| 邯郸市| 清河县| 上杭县|