Python3.5 use tkinter to create notepad, python3.5tkinter

Source: Internet
Author: User

Python3.5 use tkinter to create notepad, python3.5tkinter

Tkinter is a graphical interface library for tk in Python, allowing you to easily design graphical interfaces and program interactive operations. The advantage of tkinter is that it is easy to use and has a good combination with Python. Tkinter is integrated by default in Python 3.x without additional installation operations. The disadvantage is the lack of a proper visual interface design tool, which requires code to complete the window design and element layout.

The Python version used in this section is 3.x. if you want to use tkinter in python 2.x, install tkinter using apt-get. Note that tkinter usage in different Python versions may be slightly different. We recommend using Python3.

Import tkinter as tkimport tkinter. scrolledtext as tkstimport fileinputfrom tkinter import * import osimport win32clipboardimport tkinter. fontt1 = [] root = Nonedef die (event = None): root. destroy () def about (): messagebox. showinfo (title = "the current version is 1.0, welcome to use", message = "** Author: Han Dong \ n ** status: continue working hard") # def newit (event ): # editorit = editor () # editorit. neweditor () class editor (): def _ init _ (self, rt): if rt = None: Self. t = tk. tk () else: self. t = tk. toplevel (rt) self. t. title ("Text Editor % d" % (len (t1) + 1) self. frm_file = tk. frame (rt) self. frm_file.grid (row = 0, column = 0, padx = 0, sticky = W) self. btn_open = Button (self. frm_file, text = "open", relief = GROOVE, command = self. openfile) self. btn_open.pack (side = LEFT, padx = 5, fill = BOTH, expand = 1) self. btn_new = Button (self. frm_file, text = "new", relief = GROOVE, command = se Lf. neweditor) self. btn_new.pack (side = LEFT, padx = 5, fill = BOTH) self. btn_save = Button (self. frm_file, text = "save", relief = GROOVE, command = self. savefile) self. btn_save.pack (side = LEFT, padx = 5, fill = BOTH) self. btn_saveas = Button (self. frm_file, text = "Save as", relief = GROOVE, command = self. saveasfile) self. btn_saveas.pack (side = LEFT, padx = 5, fill = BOTH) self. btn_exit = Button (self. frm_file, text = "Return Output ", relief = GROOVE, command = self. close) self. btn_exit.pack (side = RIGHT, padx = 5, fill = BOTH) self. frm_edit = tk. frame (rt) self. frm_edit.grid (row = 0, column = 1, padx = 1, sticky = W) self. btn_copy = Button (self. frm_edit, text = "copy") self. btn_copy.pack (side = LEFT, padx = 5, fill = BOTH, expand = 1) self. btn_cut = Button (self. frm_edit, text = "cut") self. btn_cut.pack (side = LEFT, padx = 5, fill = BOTH, expand = 1) self. btn_paste = Button (self. frm_edit, text = "pasted") self. btn_paste.pack (side = LEFT, padx = 5, fill = BOTH, expand = 1) self. btn_find = Button (self. frm_edit, text = "query") self. btn_find.pack (side = LEFT, padx = 5, fill = BOTH, expand = 1) self. btn_allselect = Button (self. frm_edit, text = "select all") self. btn_allselect.pack (side = LEFT, padx = 5, fill = BOTH, expand = 1) self. btn_font = Button (self. frm_edit, text = "Font Style ") Self. btn_font.pack (side = LEFT, padx = 5, fill = BOTH, expand = 1) self. btn_color = Button (self. frm_edit, text = "font color") self. btn_color.pack (side = LEFT, padx = 5, fill = BOTH, expand = 1) self. bar = tk. menu (rt) self. filem = tk. menu (self. bar) self. filem. add_separator () self. filem. add_command (label = "new", command = self. neweditor, accelerator = "Ctr + N") self. filem. bind_all ("<Control-n>", self. neweditor) se Lf. filem. add_separator () self. filem. add_command (label = "open", command = self. openfile, accelerator = "Ctr + O") self. filem. bind_all ("<Control-o>", self. openfile) self. filem. add_separator () self. filem. add_command (label = "save", command = self. savefile, accelerator = "Ctr + S") self. filem. bind_all ("<Control-s>", self. savefile) self. filem. add_separator () self. filem. add_command (label = "Save as", command = self. Saveasfile, accelerator = "Ctr + D") self. filem. bind_all ("<Control-d>", self. saveasfile) self. filem. add_command (label = "close", command = self. close, accelerator = "F4") self. filem. bind_all ("<F4>", self. close) self. filem. add_separator () self. filem. add_command (label = "quit", command = die, accelerator = "ESC") self. filem. bind_all ("<Escape>", die) self. editm = tk. menu (self. bar) self. editm. add_separator () Self. editm. add_command (label = "copy", command = self. copy, accelerator = "* 10 +" Ctr + C ") self. editm. bind_all ("<Control-c>", self. copy) self. editm. add_separator () self. editm. add_command (label = "pasted", command = self. paste, accelerator = "" * 10 + "Ctr + V") self. editm. bind_all ("<Control-v>", self. paste) self. editm. add_separator () self. editm. add_command (label = "cut", command = self. cut, accelerator = "" * 1 0 + "Ctr + X") self. editm. bind_all ("<Control-x>", self. cut) self. editm. add_separator () self. editm. add_command (label = "delete", command = self. delete_text, accelerator = "" * 10 + "Delete") self. editm. bind_all ("<Delete>", self. delete_text) self. editm. add_separator () self. editm. add_command (label = "Search", command = self. find_char, accelerator = "" * 10 + "Ctr + F") self. editm. bind_all ("<Control-f>", self. find_char) Self. editm. add_separator () self. editm. add_command (label = "select all", command = self. select_char_all, accelerator = "* 10 +" Ctr + A ") self. editm. bind_all ("<Control-a>", self. select_char_all) self. formm = tk. menu (self. bar) self. formm. add_command (label = "font color", command = self. color_it, accelerator = "" * 10 + "Alt + C") self. formm. bind_all ("<Alt-f>", self. color_it) self. formm. add_separator () self. formm. add _ Command (label = "font format", command = self. font_it, accelerator = "" * 10 + "Alt + F") self. formm. bind_all ("<Alt-f>", self. font_it) self. helpm = tk. menu (self. bar) self. helpm. add_command (label = "about", command = about) self. bar. add_cascade (label = "file", menu = self. filem) self. bar. add_cascade (label = "edit", menu = self. editm) self. bar. add_cascade (label = "format", menu = self. formm) self. bar. add_cascade (label = "help", Menu = self. helpm) self. t. config (menu = self. bar) # self. f = tk. frame (self. t, width = 512) # self. f. pack (expand = 1) self. st = tkst. scrolledText (self. t) self. st. grid (row = 1, column = 0, columnspan = 3, pady = 3) def close (self, event = None): self. t. destroy () def openfile (self, event = None): oname = filedialog. askopenfilename (filetypes = [("Open File ","*. txt ")]) if oname: for line in fileinput. input (oname): self. St. insert ("1.0", line) self. t. title (oname) def savefile (self, event = None): if OS. path. isfile (self. t. title (): opf = open (self. t. title (), "w") opf. write (self. st. get (1.0, tk. END) opf. flush () opf. close () else: sname = filedialog. asksaveasfilename (title = "Save your baby", filetypes = [("save file ","*. txt ")], defaultextension = ". txt ") if sname: ofp = open (sname," w ") ofp. write (self. st. get (1.0, tk. END) ofp. flush () o Fp. close () self. t. title (sname) def saveasfile (self, event = None): sname = filedialog. asksaveasfilename (title = "Save your baby", filetypes = [("save file ","*. txt ")], defaultextension = ". txt ") if sname: ofp = open (sname," w ") ofp. write (self. st. get (1.0, tk. END) ofp. flush () ofp. close () self. t. title (sname) def neweditor (self, event = None): global root t1.append (editor (root) def copy (self, event = None): text = sel F. st. get (tk. SEL_FIRST, tk. SEL_LAST) self. st. clipboard_clear () self. st. clipboard_append (text) def paste (self, event = None): try: text = self. st. selection_get (selection = "CLIPBOARD") self. st. insert (tk. INSERT, text) self. st. clipboard_clear () handle T tk. tclError: pass def cut (self, event = None): text = self. st. get (tk. SEL_FIRST, tk. SEL_LAST) self. st. delete (tk. SEL_FIRST, tk. SEL_LAST) self. st. clipboard_clear () Self. st. clipboard_append (text) def delete_text (self): self. st. delete (tk. SEL_FIRST, tk. SEL_LAST) def find_char (self, event = None): target = simpledialog. askstring ("simple text editor", "Search for strings") if target: end = self. st. index (tk. END) print (end) endindex = end. split (". ") end_line = int (endindex [0]) end_column = int (endindex [1]) pos_line = 1 pos_column = 0 length = len (target) while pos_line <= end_line: if pos_lin E = end_line and pos_column + length> end_column: break elif pos_line <end_line and pos_column + length> 500: pos_line = pos_line + 1 pos_column = (pos_column + length) -500 if pos_column> end_column: break else: pos = str (pos_line) + ". "+ str (pos_column) where = self. st. search (target, pos, tk. END) if where: print (where) where1 = where. split (". ") sele_end_col = str (int (where1 [1]) + length) sele = where 1 [0] + ". "+ sele_end_col self. st. tag_add (tk. SEL, where, sele) self. st. mark_set (tk. INSERT, sele) self. st. see (tk. INSERT) self. st. focus () again = messagebox. askokcancel (title = "continue to query") if again: pos_line = int (where1 [0]) pos_column = int (sele_end_col) else: aa = messagebox. showinfo (title = "you finally gave up on me", message = "you gave up on me --! ") If aa: sys. exit () def select_char_all (self, event = None): self. st. tag_add (tk. SEL, 1.0, tk. END) self. st. see (tk. INSERT) self. st. focus () def color_it (self, event = None): color = colorchooser. askcolor () self. st ["foreground"] = color [1] def font_it (self, event = None): self. t_font = tk. toplevel () self. t_font.title ("font selection panel") self. label_size = Label (self. t_font, text = "font size") self. label_shape = Label (self. t_font, text = "font") self. label_font = Label (self. t_font, text = "font type") self. label_weight = Label (self. t_font, text = "font width") self. label_size.grid (row = 0, column = 0, padx = 30) self. label_shape.grid (row = 0, column = 4, padx = 30) self. label_font.grid (row = 0, column = 2, padx = 30) self. label_weight.grid (row = 0, column = 6, padx = 30) self. scroll_size = Scrollbar (self. t_font) self. scroll_size.grid (row = 1, column = 1, stick = NS) self. scroll_shape = Scrollbar (self. t_font) self. scroll_shape.grid (row = 1, column = 3, stick = NS) self. scroll_font = Scrollbar (self. t_font) self. scroll_font.grid (row = 1, column = 5, stick = NS) self. scroll_weight = Scrollbar (self. t_font) self. scroll_weight.grid (row = 1, column = 7, stick = NS) list_var_font = StringVar () list_var_size = StringVar () list_var_shape = StringVar () list_var_weight = StringVar (self. list_font = Listbox (self. t_font, selectmode = BROWSE, listvariable = list_var_font, exportselection = 0) self. list_font.grid (row = 1, column = 2, padx = 4) list_font_item = ["\" Arial \ "", "\" Arial Baltic \"", "\" Arial Black \ "", "\" Arial CE \ "", "\" Arial CYR \ "", "\" Arial Greek \"", "\" Arial Narrow \ "", "\" Arial TUR \ "", "\" Baiduan Number \ "", "\" Batang, batangChe \ ""] for item in list_font_item: self. list_font.insert (0, item) self. list_font.bind ("<ButtonRelease-1>", self. change_font) self. list_shape = Listbox (self. t_font, selectmode = BROWSE, listvariable = list_var_shape, exportselection = 0) self. list_shape.grid (row = 1, column = 4, padx = 4) list_shape_item = ["italic", "roman"] for item in list_shape_item: self. list_shape.insert (0, item) self. list_shape.bind ("<ButtonRelease-1>", self. change_shape) self. list_size = Listbox (self. t_font, selectmode = BROWSE, listvariable = list_var_size, exportselection = 0) self. list_size.grid (row = 1, column = 0, padx = 4) list_size_item = [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17] for item in list_size_item: self. list_size.insert (0, item) self. list_size.bind ("<ButtonRelease-1>", self. change_size) self. list_weight = Listbox (self. t_font, selectmode = BROWSE, listvariable = list_var_weight, exportselection = 0) self. list_weight.grid (row = 1, column = 6, padx = 4) list_weight_item = ["bold", "normal"] for item in list_weight_item: self. list_weight.insert (0, item) self. list_weight.bind ("<ButtonRelease-1>", self. change_weight) self. labFra_display = LabelFrame (self. t_font, text = "Font Style demo area") self. labFra_display.grid (row = 2, column = 0, pady = 4) self. lab_display = Label (self. labFra_display, text = "I Am Here") self. lab_display.pack () self. btn_ OK = Button (self. t_font, text = "OK", width = 10, height = 2, command = self. change) self. btn_ OK .grid (row = 2, column = 2, pady = 4) self. btn_cancel = Button (self. t_font, width = 10, height = 2, text = "cancel", command = self. exit_subwindow) self. btn_cancel.grid (row = 2, column = 4, pady = 4) def change_size (self, event): tk. customFont = font. font (family = "Helvetica", size = 12, weight = "normal", slant = "roman", underline = 0) size = tk. customFont ["size"] tk. customFont. configure (size = self. list_size.get (self. list_size.curselection () self. st. config (font = tk. customFont) self. size_count = 1 pass def change_font (self, event): tk. customFont = font. font (family = "Helvetica", size = 12, weight = "normal", slant = "roman", underline = 0) family = tk. customFont ["family"] tk. customFont. configure (family = self. list_font.get (self. list_font.curselection () self. st. config (font = tk. customFont) self. font_count = 1 pass def change_shape (self, event): tk. customFont = font. font (family = "Helvetica", size = 12, weight = "normal", slant = "roman", underline = 0) slant = tk. customFont ["slant"] tk. customFont. configure (slant = self. list_shape.get (self. list_shape.curselection () self. st. config (font = tk. customFont) self. shape_count = 1 pass def change_weight (self, event): tk. customFont = font. font (family = "Helvetica", size = 12, weight = "normal", slant = "roman", underline = 0) weight = tk. customFont ["weight"] tk. customFont. configure (weight = self. list_weight.get (self. list_weight.curselection () self. st. config (font = tk. customFont) self. shape_count = 1 def change (self, event): pass # self. st ["font"] = (self. list_size.get (self. list_size.curselection () # self. st ["font"] = (self. list_font.get (self. list_font.curselection () # self. st ["font"] = (self. list_shape.get (self. list_shape.curselection () def exit_subwindow (self): self. t_font.destroy () if _ name _ = "_ main _": root = None t1.append (editor (root) root = t1 [0]. t root. mainloop ()

The above is the code shared in this article. I hope you will like it.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.