Advertisement
Guest User

Python code

a guest
May 15th, 2021
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.57 KB | None | 0 0
  1. import tkinter as tk
  2. from tkinter import ttk
  3. from tkinter import filedialog
  4.  
  5.  
  6. class Tab:
  7.     def __init__(self, notebook:ttk.Notebook):
  8.         self.filename = None
  9.         self.notebook = notebook
  10.  
  11.         self.text_widget = tk.Text(self.notebook)
  12.         self.text_widget.bind("<Control-o>", self.open)
  13.         self.text_widget.bind("<Control-s>", self.save)
  14.         self.text_widget.bind("<Control-Shift-S>", self.saveas)
  15.         self.notebook.add(self.text_widget, text="The tab name")
  16.  
  17.     def open(self, _=None):
  18.         filename = filedialog.askopenfilename()
  19.         if filename != "":
  20.             with open(filename, "r") as file:
  21.                 data = file.read()
  22.             self.text_widget.delete("0.0", "end")
  23.             self.text_widget.insert("end", data)
  24.             self.filename = filename
  25.         return "break"
  26.  
  27.     def save(self, _=None):
  28.         if self.filename is None:
  29.             self.saveas()
  30.         else:
  31.             self._save()
  32.         return "break"
  33.  
  34.     def saveas(self, _=None):
  35.         filename = filedialog.asksaveasfilename()
  36.         if filename == "":
  37.             return "break"
  38.         self.filename = filename
  39.         self._save()
  40.  
  41.     def _save(self):
  42.         assert self.filename is not None, "self.filename shouldn't be None"
  43.         data = self.text_widget.get("0.0", "end")
  44.         with open(self.filename, "w") as file:
  45.             file.write(data)
  46.  
  47.  
  48. class App:
  49.     def __init__(self):
  50.         self.root = tk.Tk()
  51.         self.new_tab_button = tk.Button(self.root, text="New tab", command=self.add_new_tab)
  52.         self.new_tab_button.pack()
  53.         self.open_button = tk.Button(self.root, text="Open file", command=self.open_file)
  54.         self.open_button.pack()
  55.         self.save_button = tk.Button(self.root, text="Save file", command=self.save_file)
  56.         self.save_button.pack()
  57.         self.notebook = ttk.Notebook(self.root)
  58.         self.notebook.pack()
  59.         self.tabs = []
  60.  
  61.     def add_new_tab(self):
  62.         tab = Tab(self.notebook)
  63.         self.tabs.append(tab)
  64.  
  65.     def get_current_tab(self):
  66.         # This code gets the currently selected tab
  67.         idx = self.notebook.index(self.notebook.select())
  68.         tab = self.tabs[idx]
  69.         return tab
  70.  
  71.     def open_file(self):
  72.         tab = self.get_current_tab()
  73.         tab.open() # Call `open` on the tab
  74.  
  75.     def save_file(self):
  76.         tab = self.get_current_tab()
  77.         tab.save() # Call `save` on the tab
  78.  
  79.     def mainloop(self):
  80.         self.root.mainloop()
  81.  
  82.  
  83. if __name__ == "__main__":
  84.     app = App()
  85.     app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement