Tkinter库制作记事本
现在为了创建这个记事本,你的系统中应该已经安装了 Python 3 和 Tkinter。您可以根据系统要求下载合适的python 包。成功安装 python 后,您需要安装 Tkinter(一个 Python 的 GUI 包)。
使用此命令安装 Tkinter :
1
|
pip install python - tk |
导入 Tkinter :
1
2
3
4
5
|
import tkinter import os from tkinter import * from tkinter.messagebox import * from tkinter.filedialog import * |
注意: messagebox用于在称为记事本的白框中写入消息,filedialog用于在您从系统中的任何位置打开文件或将文件保存在特定位置或位置时出现的对话框。
添加菜单:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# 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 ) |
使用此代码,我们将在记事本的窗口中添加菜单,并向其中添加复制、粘贴、保存等内容。
添加功能:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
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>>" ) |
在这里,我们添加了记事本中所需的所有功能,您也可以添加其他功能,例如字体大小、字体颜色、粗体、下划线等。
合并后的主要代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
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() |
要运行此代码,请使用扩展名.py保存它,然后打开 cmd(命令提示符)并移动到保存文件的位置,然后编写以下内容
1
|
python "filename" .py |
然后按回车,它就会运行。或者可以通过简单地双击您的.py扩展文件直接运行。
到此这篇关于教你如何使用Python Tkinter库制作记事本的文章就介绍到这了,更多相关Tkinter库制作记事本内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/allway2/article/details/117706878