使用 Tkinter 製作記事本

| | | | | | | | | | | | |

您的系統上必須已安裝 Python 3 和 Tkinter 才能創建此筆記本。您可以根據您的系統要求下載相應的 Python 包。成功安裝 Python 後,需要安裝 Tkinter(Python 的 GUI 包)。

使用此命令安裝 Tkinter:

pip install python-tk 

Tkinter 導入:


< tbody>

import tkinter

import os

from tkinter import *


# 在上面找到一個位置

from tkinter.messagebox import *


# 打開使用的對話框根據需要

from tkinter.filedialog import *

注意。 Message Box 用於在名為 Notepad 的白框中寫入消息,Dialog File 用於顯示/em> 對話框時從系統上的任何位置打開文件或將文件保存到特定位置或位置。

添加菜單:

# 添加控件(小部件)


self .__ thisTextArea.grid (sticky = N + E + S + W)


# 打開新文件

self .__ thisFileMenu.add_command (label = <代碼類= "string"> "新" ,

命令 = self .__ newFile)


# 打開現有文件

self .__ thisFileMenu.add_command (label = "打開" ,

命令 = self .__ openFile)


# 保存當前文件

self .__ thisFileMenu.add_command (label = "保存" ,

command = self .__ saveFile)


# 在對話框中創建一行

self .__ thisFileMenu.add_separator ()


# 停止

self .__ thisFileMenu.add_command (label = "退出" ,

command = self .__ quitApplication)

self .__ thisMenuBar.add_cascade ( label = "文件” ,

menu = self .__ thisFileMenu)


# 添加筆劃

self .__ thisEditMenu.add_command (label = "Cut" ,

command = self .__ cut)


# 給一個複制功能

self .__ thisEditMenu.add_command (label = "複製" ,

命令 = self .__ 複製)


# 添加插入函數

self .__ thisEditMenu.add_command (label = "Paste" ,

command = self .__ paste)


# 啟用編輯

self .__ thisMenuBar.add_cascade (label = “編輯” ,

菜單 = self .__ thisEditMenu)


# 創建記事本描述函數

self .__ thisHelpMenu.add_command (label = "關於記事本" ,

命令 = self .__ showAbout )

self .__ thisMenuBar.add_cascade (label = "幫助" ,

菜單 = self .__ thisHelpMenu)

< br>

self .__ root.config (menu = self .__ thisMenuBar)


self .__ thisScrollBar.pack (side = RIGHT,填充 = Y)


# 滾動條會自動調整
# 根據內容

self .__ thisScrollBar.config (command = self .__ thisTextArea .yview)

self .__ thisTextArea.config (yscrollcommand = 選擇f .__ thisScrollBar. set )

使用此代碼,我們將向記事本窗口添加菜單,並添加複制、粘貼、保存等內容。

添加功能:

def __ quitApplication ( self ):

self .__ root.destroy ()

#exit()


def __ showAbout ( self ):

showinfo( "記事本" , "Mrinal Verma" )

< br>

def __ openFile ( self ):


self .__ file = askopenfilename (defaultextension = ". txt" ,

文件類型 = [( "所有文件" , " *. * " ),

( "文本文檔" , "*.txt" )])

if self .__ file = = "":


# 沒有要打開的文件

self .__ file =

else :

# 嘗試打開文件

# 設置窗口標題

self .__ root.title (os.path. basename ( self .__ 文件) + <代碼class = "string"> " - 沒有 tepad " )

self .__ thisTextArea.delete ( 1.0 , END)


文件 = 打開 ( self .__ 文件, "r" )


self .__ thisTextArea.insert ( 1.0 , 文件 。讀取 ())


file 。 close ()

def __ newFile ( self ):

self .__ root.title("Untitled - Notepad" )

self .__ file = None

self .__ thisTextArea.delete ( 1.0 , END)


def __ saveFile( self ):


if self .__ 文件 = = None :

# 另存為新文件

self .__ file = asksaveasfilename (initialfile = ’ Untitled.txt’ ,

defaultextension = "。 txt" ,

文件類型 = [( "所有文件" , "*.*" ),

( "文本文檔" , "*.txt" )])


if self .__ file = = "":

self .__ 文件 = None

else :

# 嘗試保存文件

file = 打開 ( self .__ 文件, "w" )

f ile 。寫 ( self .__ thisTextArea.get ( 1.0 , END))

文件 。 close()

#改變窗口的標題

self .__ root.title (os.path.basename ( self .__ file) + "- 記事本" )



else :

文件 = 打開 ( self .__file, "w" )

文件 。寫 ( self .__ thisTextArea.get ( 1.0 , END))

文件 。 close()


def __ cut ( self ):

self .__ thisTextArea.event_generate( "<<Cut>>" )


def __ 複製 ( self ):

self .__ thisTextArea.event_generate( """Copy""" )


def __ paste ( self ):

self .__ thisTextArea.event_generate( "< <<粘貼 >"" )

這個我們已經添加了記事本所需的所有功能,您還可以添加其他功能,如字體大小、字體顏色、粗體、下劃線等。

後面的主要代碼結合所有:


import tkinter

import os

from tkinter import *

from tkinter.messagebox import *

from tkinter.filedialog import *


記事本:

__ root = tk()


#默認窗口寬高

__ thisWidth = 300代碼>

__ thisHeight = 300

__ thisTextArea = 文本 (__root)

__ thisMenuBar = Menu (__ root)

__ thisFileMenu = Menu (__ thisMenuBar, tearoff = 0 )

__ thisEditMenu = Menu (__ thisMenuBar, tearoff = 0 )

__ thisHelpMenu = Menu (__ thisMenuBar, tearoff = 0 )


# 添加滾動條

__ thisScrollBar = 滾動條 (__ thisTextArea)

__ file = None


def __ init __ ( self , * * kwargs ):


# 設置圖標

try :

self .__ root .wm_iconbitmap ( "Notepad.ico" )

except :

pass


#設置窗口大小(默認300x300)


嘗試 :

self .__ thisWidth = kwargs [ ’width’ ]

KeyError:

pass

< br>

try :

self .__ thisHeight = kwargs [ ’height’ ]

除外 KeyError: code>

pass


#設置窗口文字

self .__ root.title ( "Untitled - Notepad" )


# 居中窗口

screenWidth = self .__ root. winfo_screenwidth ()

screenHeight = self .__ root .winfo_screenheight ()


# 為左

left = (screenWidth / 2 ) - ( self .__ thisWidth / 2 )


# Right-ally

top = (screenHeight / 2 ) - ( self . __thisHeight / 2 )

# 上下分

self .__ root.geometry ( ’%dx%d +%d +%d’ % ( self .__ thisWidth,

self .__ thisHeight,

left, top))

# 讓文本區域自動調整大小

/code> pass


# 設置窗口文本

self .__ root.title ( "Untitled - Notepad" )


# 中心窗口

screenWidth = self .__ root.winfo_screenwidth ()

screenHeight = self .__ root.winfo_screenheight()


# 為左邊

left = (screenWidth / 2 )

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method