教你如何使用Python Tkinter庫(kù)制作記事本
Tkinter庫(kù)制作記事本
現(xiàn)在為了創(chuàng)建這個(gè)記事本,你的系統(tǒng)中應(yīng)該已經(jīng)安裝了 Python 3 和 Tkinter。您可以根據(jù)系統(tǒng)要求下載合適的python 包。成功安裝 python 后,您需要安裝 Tkinter(一個(gè) Python 的 GUI 包)。
使用此命令安裝 Tkinter :
pip install python-tk
導(dǎo)入 Tkinter :
import tkinter import os from tkinter import * from tkinter.messagebox import * from tkinter.filedialog import *
注意: messagebox用于在稱(chēng)為記事本的白框中寫(xiě)入消息,filedialog用于在您從系統(tǒng)中的任何位置打開(kāi)文件或?qū)⑽募4嬖谔囟ㄎ恢没蛭恢脮r(shí)出現(xiàn)的對(duì)話(huà)框。
添加菜單:
# Add controls(widget) self.__thisTextArea.grid(sticky = N + E + S + W) # To open new file self.__thisFileMenu.add_command(label = "New", command = self.__newFile) # To open a already existing file self.__thisFileMenu.add_command(label = "Open", command = self.__openFile) # To save current file self.__thisFileMenu.add_command(label = "Save", command = self.__saveFile) # To create a line in the dialog self.__thisFileMenu.add_separator() # To terminate self.__thisFileMenu.add_command(label = "Exit", command = self.__quitApplication) self.__thisMenuBar.add_cascade(label = "File", menu = self.__thisFileMenu) # To give a feature of cut self.__thisEditMenu.add_command(label = "Cut", command = self.__cut) # To give a feature of copy self.__thisEditMenu.add_command(label = "Copy", command = self.__copy) # To give a feature of paste self.__thisEditMenu.add_command(label = "Paste", command = self.__paste) # To give a feature of editing self.__thisMenuBar.add_cascade(label = "Edit", menu = self.__thisEditMenu) # To create a feature of description of the notepad self.__thisHelpMenu.add_command(label = "About Notepad", command = self.__showAbout) self.__thisMenuBar.add_cascade(label = "Help", menu = self.__thisHelpMenu) self.__root.config(menu = self.__thisMenuBar) self.__thisScrollBar.pack(side = RIGHT, fill = Y) # Scrollbar will adjust automatically # according to the content self.__thisScrollBar.config(command = self.__thisTextArea.yview) self.__thisTextArea.config(yscrollcommand = self.__thisScrollBar.set)
使用此代碼,我們將在記事本的窗口中添加菜單,并向其中添加復(fù)制、粘貼、保存等內(nèi)容。
添加功能:
def __quitApplication(self): self.__root.destroy() # exit() def __showAbout(self): showinfo("Notepad", "Mrinal Verma") def __openFile(self): self.__file = askopenfilename(defaultextension=".txt", filetypes=[("All Files","*.*"), ("Text Documents","*.txt")]) if self.__file == "": # no file to open self.__file = None else: # try to open the file # set the window title self.__root.title(os.path.basename(self.__file) + " - Notepad") self.__thisTextArea.delete(1.0,END) file = open(self.__file,"r") self.__thisTextArea.insert(1.0,file.read()) file.close() def __newFile(self): self.__root.title("Untitled - Notepad") self.__file = None self.__thisTextArea.delete(1.0,END) def __saveFile(self): if self.__file == None: #save as new file self.__file = asksaveasfilename(initialfile='Untitled.txt', defaultextension=".txt", filetypes=[("All Files","*.*"), ("Text Documents","*.txt")]) if self.__file == "": self.__file = None else: # try to save the file file = open(self.__file,"w") file.write(self.__thisTextArea.get(1.0,END)) file.close() # change the window title self.__root.title(os.path.basename(self.__file) + " - Notepad") else: file = open(self.__file,"w") file.write(self.__thisTextArea.get(1.0,END)) file.close() def __cut(self): self.__thisTextArea.event_generate("<<Cut>>") def __copy(self): self.__thisTextArea.event_generate("<<Copy>>") def __paste(self): self.__thisTextArea.event_generate("<<Paste>>")
在這里,我們添加了記事本中所需的所有功能,您也可以添加其他功能,例如字體大小、字體顏色、粗體、下劃線等。
合并后的主要代碼:
import tkinter import os from tkinter import * from tkinter.messagebox import * from tkinter.filedialog import * class Notepad: __root = Tk() # default window width and height __thisWidth = 300 __thisHeight = 300 __thisTextArea = Text(__root) __thisMenuBar = Menu(__root) __thisFileMenu = Menu(__thisMenuBar, tearoff=0) __thisEditMenu = Menu(__thisMenuBar, tearoff=0) __thisHelpMenu = Menu(__thisMenuBar, tearoff=0) # To add scrollbar __thisScrollBar = Scrollbar(__thisTextArea) __file = None def __init__(self, **kwargs): # Set icon try: self.__root.wm_iconbitmap("Notepad.ico") except: pass # Set window size (the default is 300x300) try: self.__thisWidth = kwargs['width'] except KeyError: pass try: self.__thisHeight = kwargs['height'] except KeyError: pass # Set the window text self.__root.title("Untitled - Notepad") # Center the window screenWidth = self.__root.winfo_screenwidth() screenHeight = self.__root.winfo_screenheight() # For left-alling left = (screenWidth / 2) - (self.__thisWidth / 2) # For right-allign top = (screenHeight / 2) - (self.__thisHeight / 2) # For top and bottom self.__root.geometry('%dx%d+%d+%d' % (self.__thisWidth, self.__thisHeight, left, top)) # To make the textarea auto resizable self.__root.grid_rowconfigure(0, weight=1) self.__root.grid_columnconfigure(0, weight=1) # Add controls (widget) self.__thisTextArea.grid(sticky=N + E + S + W) # To open new file self.__thisFileMenu.add_command(label="New", command=self.__newFile) # To open a already existing file self.__thisFileMenu.add_command(label="Open", command=self.__openFile) # To save current file self.__thisFileMenu.add_command(label="Save", command=self.__saveFile) # To create a line in the dialog self.__thisFileMenu.add_separator() self.__thisFileMenu.add_command(label="Exit", command=self.__quitApplication) self.__thisMenuBar.add_cascade(label="File", menu=self.__thisFileMenu) # To give a feature of cut self.__thisEditMenu.add_command(label="Cut", command=self.__cut) # to give a feature of copy self.__thisEditMenu.add_command(label="Copy", command=self.__copy) # To give a feature of paste self.__thisEditMenu.add_command(label="Paste", command=self.__paste) # To give a feature of editing self.__thisMenuBar.add_cascade(label="Edit", menu=self.__thisEditMenu) # To create a feature of description of the notepad self.__thisHelpMenu.add_command(label="About Notepad", command=self.__showAbout) self.__thisMenuBar.add_cascade(label="Help", menu=self.__thisHelpMenu) self.__root.config(menu=self.__thisMenuBar) self.__thisScrollBar.pack(side=RIGHT, fill=Y) # Scrollbar will adjust automatically according to the content self.__thisScrollBar.config(command=self.__thisTextArea.yview) self.__thisTextArea.config(yscrollcommand=self.__thisScrollBar.set) def __quitApplication(self): self.__root.destroy() # exit() def __showAbout(self): showinfo("Notepad", "Mrinal Verma") def __openFile(self): self.__file = askopenfilename(defaultextension=".txt", filetypes=[("All Files", "*.*"), ("Text Documents", "*.txt")]) if self.__file == "": # no file to open self.__file = None else: # Try to open the file # set the window title self.__root.title(os.path.basename(self.__file) + " - Notepad") self.__thisTextArea.delete(1.0, END) file = open(self.__file, "r") self.__thisTextArea.insert(1.0, file.read()) file.close() def __newFile(self): self.__root.title("Untitled - Notepad") self.__file = None self.__thisTextArea.delete(1.0, END) def __saveFile(self): if self.__file == None: # Save as new file self.__file = asksaveasfilename(initialfile='Untitled.txt', defaultextension=".txt", filetypes=[("All Files", "*.*"), ("Text Documents", "*.txt")]) if self.__file == "": self.__file = None else: # Try to save the file file = open(self.__file, "w") file.write(self.__thisTextArea.get(1.0, END)) file.close() # Change the window title self.__root.title(os.path.basename(self.__file) + " - Notepad") else: file = open(self.__file, "w") file.write(self.__thisTextArea.get(1.0, END)) file.close() def __cut(self): self.__thisTextArea.event_generate("<<Cut>>") def __copy(self): self.__thisTextArea.event_generate("<<Copy>>") def __paste(self): self.__thisTextArea.event_generate("<<Paste>>") def run(self): # Run main application self.__root.mainloop() # Run main application notepad = Notepad(width=600, height=400) notepad.run()
要運(yùn)行此代碼,請(qǐng)使用擴(kuò)展名.py保存它,然后打開(kāi) cmd(命令提示符)并移動(dòng)到保存文件的位置,然后編寫(xiě)以下內(nèi)容
python "filename".py
然后按回車(chē),它就會(huì)運(yùn)行?;蛘呖梢酝ㄟ^(guò)簡(jiǎn)單地雙擊您的.py擴(kuò)展文件直接運(yùn)行。
到此這篇關(guān)于教你如何使用Python Tkinter庫(kù)制作記事本的文章就介紹到這了,更多相關(guān)Tkinter庫(kù)制作記事本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 實(shí)現(xiàn)快速生成連續(xù)、隨機(jī)字母列表
今天小編就為大家分享一篇python 實(shí)現(xiàn)快速生成連續(xù)、隨機(jī)字母列表,具有很好的價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11python整合ffmpeg實(shí)現(xiàn)視頻文件的批量轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了python整合ffmpeg實(shí)現(xiàn)視頻文件的批量轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例
今天小編就為大家分享一篇Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Django2.1.7 查詢(xún)數(shù)據(jù)返回json格式的實(shí)現(xiàn)
這篇文章主要介紹了Django2.1.7 查詢(xún)數(shù)據(jù)返回json格式的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Python中__repr__和__str__區(qū)別詳解
這篇文章主要介紹了Python中__repr__和__str__區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11opencv實(shí)現(xiàn)圖像旋轉(zhuǎn)效果
這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)圖像旋轉(zhuǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03Python?pytest自動(dòng)化測(cè)試庫(kù)十個(gè)強(qiáng)大用法示例
本文將介紹Python的pytest庫(kù)的10個(gè)強(qiáng)大用法,并提供相應(yīng)的代碼示例,幫助你更好地理解和應(yīng)用單元測(cè)試,它提供了許多高級(jí)功能和便利的用法,能夠讓我們更輕松地編寫(xiě)和執(zhí)行單元測(cè)試2024-01-01