首頁 > 軟體

python tkinter庫的Text記錄點選路經和刪除記錄詳情

2022-06-28 18:04:40

前言

需要注意,對範例化的文字元件的insert、delete等操作的index**都是浮點型而不是整型**,(1.0,2.0)表示的是對第一行操作,關閉視窗需要知道作用的物件是最根本的視窗,不是某個Frame。

Text的幾個主要設定引數:

  • 第一個引數:表單或框架變數
  • state:控制是否可以修改text的文字內容,normal,disable
  • width,height:寬和高

text元件的一個主要操作:

txt_entry=Text(wintool,state,width,height).pack()
txt_entry.get(start_index,end_index)#讀取text中的字元內容,start_index,end_index都是浮點數,整數部分表示一行
txt_entry.delete(start_index,end_index)  # 刪除文字
txt_entry.insert(start_index,'文字內容')# 對text插入文字內容,若是結尾索引可以使用END
import tkinter.filedialog as fd:用於讀取檔案或路徑的庫
fd.askdirectory:返回點選的路徑
fd.askopenfilenames():返回多個選中檔案的名字
txt_entry=Text(wintool,width,height,).pack():元件範例化和放置
txt_entry(元件範例化後的變數)

對點選開啟的檔案路徑進行記錄顯示

from tkinter import *
import tkinter.filedialog as fd
all_path = []  # 記錄全域性路徑
def openFloder():
    folder_path = fd.askdirectory(initialdir=r"D:graduate小程式車牌的總數量及省份統計") # 開啟檔案
    show_folderPath.delete(0.0,END)  # 清空
    show_folderPath.insert(0.0,folder_path)  #寫入路徑
    print(folder_path)
    all_path.append(folder_path) 
    txt.delete(0.0,'end')
    txt.insert(0.0,all_path)  #插入的第一個字元是索引馬,不能是整數形式
    print('all_path:',all_path)
    root = Tk()   # 生成主視窗物件
root.title('Demo') # 視窗標題
root.geometry('400x400') # 視窗大小
fr= Frame(root,width=200,height=200,)
fr.pack(side='top',expand='yes')
txt = Text(fr,bd=5)
txt.pack(side='bottom')
txt_txt = txt.get(0.0)
print('txt_txt:',txt_txt)
fr1= Frame(fr,width=100,height=30,bg='gray')
fr1.pack(side='left',expand='yes')
fr2= Frame(fr,width=100,height=30,bg='white')
fr2.pack(side='left',expand='yes')
show_folderPath = Entry(fr2)
show_folderPath .pack(side='left')

btn = Button(fr1,bg='orange',text ="選擇檔案",command = openFloder) # 在root視窗物件上設定一個按鈕,用於開啟檔案和返回選擇的檔名
btn.pack()
root.mainloop() 

記錄點選的檔案路徑和資料夾路徑

更多相關檔案路徑可以參考

# from tkinter import *
import tkinter as tk
import tkinter.filedialog as fd
from tkinter import filedialog

def select_file():
    # 單個檔案選擇
    selected_file_path = filedialog.askopenfilename()  # 使用askopenfilename函數選擇單個檔案
    select_path.set(selected_file_path)  

def select_files():
    # 多個檔案選擇
    selected_files_path = filedialog.askopenfilenames()  # askopenfilenames函數選擇多個檔案
    select_path.set('n'.join(selected_files_path))  # 多個檔案的路徑用換行符隔開,更新tkinter的字元變數
def select_folder():
    # 資料夾選擇
    selected_folder = filedialog.askdirectory()  # 使用askdirectory函數選擇資料夾
    select_path.set(selected_folder)
root = tk.Tk()
root.title("選擇檔案或資料夾,得到路徑")
# 初始化Entry控制元件的textvariable屬性值,能夠實時讀取控制元件的變化
select_path = tk.StringVar()

# 佈局控制元件
tk.Label(root, text="檔案路徑:").grid(column=0, row=0, rowspan=3)
tk.Entry(root, textvariable = select_path).grid(column=1, row=0, rowspan=7)
tk.Button(root, text="選擇單個檔案", command=select_file).grid(row=0, column=2)
tk.Button(root, text="選擇多個檔案", command=select_files).grid(row=1, column=2)
tk.Button(root, text="選擇資料夾", command=select_folder).grid(row=2, column=2)
root.mainloop()

記錄檔案路徑,在text中顯示,刪除和關閉視窗

from tkinter import *
import tkinter as tk
import tkinter.filedialog as fd
all_paths=[]
def real_close():  #定義關閉視窗命令,在button中使用,若使用定義的函數,必須把定義放在使用語句的前邊
    root.quit()
def choose_folder():  # 每次選擇一個檔案路徑
    folder_dirs["state"] = 'normal'  # 將文字方塊元件修改為可修改
    # folder_dirs.delete(0.0,END)  # 清空,第一個引數必須是浮點型的不能是整型
    select_folder = fd.askdirectory()  # 每次點選檔案
    select_paths.set(select_folder)   #為了顯示
    all_paths.append(select_folder)  # 為了記錄點選過的所有檔案路徑
    print(all_paths)
    # text元件對記錄的路徑顯示,且連續從後邊插入,為了顯示
    folder_dirs.insert('end',select_paths.get()+'n')  
    folder_dirs["state"] = 'disable'  # 將文字方塊修改為不可修改
def delete_folder():  # 每次選擇一個檔案路徑
    folder_dirs["state"] = 'normal'  # 將文字方塊元件修改為可修改
    folder_txt = folder_dirs.get(1.0,'end').split('n')
    txt_len = len(folder_txt)
    txt_start = '%s.0'%(txt_len-2)  # text元件中的索引表示的含義:1.1表示第一行第一個字元,
    txt_end = '%s.0'%(txt_len-1) 
    # folder_dirs.delete(1.0,2.0)表示刪除第一行內容
    folder_dirs.delete(txt_start,txt_end)  
    all_paths.pop()
    print(all_paths)
    folder_dirs["state"] = 'disable'  # 將文字方塊修改為不可修改
root=Tk()
root.title('資料夾的選擇和路徑顯示')
root.geometry('800x400') # 表單大小
# 記錄點取的路徑,使用內容時需要使用get()方法,每次記錄一個路徑
select_paths = tk.StringVar() 
Label(root,text="folders:",font=("Arial", 16),bg='yellow').pack(side='left',padx=5,pady=5)
folder_dirs=Text(root,state='disable',bd=5,width=50,height=25,)  # 定義路徑文字方塊
folder_dirs.pack(side='left',padx=5,pady=5)  # 放置文字元件
Button(root, text = "choose folder", command=choose_folder,font=("Arial", 12),bg='green').pack(side='left',padx=5,pady=5)
Button(root, text = "delete folder", command=delete_folder,font=("Arial", 12),bg='red').pack(side='left',padx=5,pady=5)
but=Button(root, text = "EXIT", command=real_close,font=("Arial", 12),bg='red')
but.pack(side='bottom',expand=0)
root.mainloop()

到此這篇關於python tkinter庫的Text記錄點選路經和刪除記錄詳情的文章就介紹到這了,更多相關python tkinter庫 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com