網站首頁 編程語言 正文
前言
需要注意,對實例化的文本組件的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()
原文鏈接:https://blog.csdn.net/weixin_43794311/article/details/124682879
相關推薦
- 2022-07-26 msSQL中having的用處詳解_MsSql
- 2022-06-01 ASP.Net?Core中的日志與分布式鏈路追蹤_實用技巧
- 2022-04-18 修改taro-ui的樣式,在自定義組件中使用taro-ui,修改ui框架樣式
- 2022-08-05 C語言文件操作之fread函數詳解_C 語言
- 2022-04-20 C語言數據結構與算法之時間空間復雜度入門_C 語言
- 2022-03-07 android?studio實驗:?UI設計?ListView及事件響應_Android
- 2022-12-10 C++中的結構體vector排序問題_C 語言
- 2022-07-21 SpringBoot默認開啟AOP,采用Cglib代理方式?(Spring AOP快速入門)
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支