Python+tkinter自定義實現(xiàn)文件選擇按鈕
文件對話框按鈕
文件交互是GUI編程中經(jīng)常遇到的需求,比如在裝軟件的時候,往往會遇到自定義安裝路徑的選項,這個時候往往有兩種路徑設置方式,一種是直接在文本框中輸入,另一種是點擊按鈕選擇對話框。
這個需求實在是太頻繁了,值得專門做一個組件,這個組件有三個要素,分別是輸入框、按鈕和對話框。其必不可少的參數(shù)有下面幾類
- 布局類:組件高度;Entry和Button的寬度
- 對話框類型:文件夾對話框還是文件對話框
- 標簽和值,即Button需要有標簽,Entry需要有個值
方便起見,其他參數(shù)都被封裝在四個字典中,分別對應主控件、按鈕、輸入框以及對話框的其他參數(shù)。
tkinter.filedialog中共提供了7中對話框,其中四種的返回值是字符串,列表如下
| 對話框 | 說明 |
|---|---|
| askopenfilename | 文件選擇對話框 |
| askopenfilenames | 多文件選擇對話框 |
| asksaveasfilename | 文件保存對話框 |
| askdirectory | 文件夾選擇對話框 |
故而需要為其創(chuàng)建一個字典,以求參數(shù)一一對應。
代碼實現(xiàn)
最后得到程序如下
import tkinter as tk
import tkinter.ttk as ttk
from tkinter.filedialog import (askopenfilename,
askopenfilenames, askdirectory, asksaveasfilename)
from tkinter.colorchooser import askcolor
class DialogButton(ttk.Frame):
def __init__(self, master,
height, widthL, widthR, label, logtype, text=None,
frmDct={}, btnDct={}, enyDct={}, logDct={}):
w = widthL + widthR
super().__init__(master,
height=height, width = w, **frmDct)
self.pack()
self.text = tk.StringVar() if not text else text
ttk.Button(self, width=widthR, text=label,
command = self.Click, **btnDct).pack(side=tk.RIGHT)
ttk.Entry(self, width=widthL, textvariable=self.text,
**enyDct).pack(fill=tk.X, expand=True, padx=5)
self.logtype = logtype
self.logDct = logDct
def Click(self):
typeDct = {
"文件" : askopenfilename,
"文件夾" : askdirectory,
"多文件" : askopenfilenames,
"保存文件" : asksaveasfilename,
"顏色" : askcolor,
}
text = typeDct[self.logtype](**self.logDct)
self.text.set(text)
def get(self):
return self.text.get()
if __name__ == "__main__":
root = tk.Tk()
DialogButton(root, 10, 50, 10, "選擇文件夾", "文件夾")
root.mainloop()
效果如下

顏色對話框
在上面的代碼中出現(xiàn)了兩行奇怪的內(nèi)容,即對askcolor對話框的引入和使用。這是tkinter中提供的顏色對話框,可以自由選擇顏色,非常便捷。得益于函數(shù)式的便利性,只需兩行代碼,就可以為這個組件添加一個顏色對話框,效果如下

到此這篇關于Python+tkinter自定義實現(xiàn)文件選擇按鈕的文章就介紹到這了,更多相關python tkinter自定義組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
快速進修Python指南之控制if-else循環(huán)技巧
這篇文章主要為大家介紹了Java開發(fā)者的Python快速進修指南之控制之if-else和循環(huán)技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
Python循環(huán)語句之break與continue的用法
這篇文章主要介紹了Python循環(huán)語句之break與continue的用法,是Python入門學習中的基礎知識,需要的朋友可以參考下2015-10-10
Python的Flask框架中實現(xiàn)登錄用戶的個人資料和頭像的教程
這篇文章主要介紹了Python的Flask框架中實現(xiàn)登錄用戶的個人資料和頭像的教程,這也是各個web框架的最基本功能之一,需要的朋友可以參考下2015-04-04

