前置き
こんにちは。
pythonにて、ネット上で見つけたソースコードを母体としてテキストエディタを作成していますが、問題が発生してしまいました。
発生した問題(疑問点)を解決する方法をご教授いただきたいなと思います。
該当のソースコード
python
1# tkinterのインポート 2import tkinter 3import tkinter as tk 4import tkinter.ttk as ttk 5import tkinter.font as font 6from tkinter.filedialog import askopenfilename 7import os 8import ctypes 9try: 10 ctypes.windll.shcore.SetProcessDpiAwareness(True) 11except: 12 pass 13 14 15 16# rootメインウィンドウの設定 17root = tk.Tk() 18 19my_font = font.Font(root,family = "游ゴシック") 20 21def new_text(): 22 import pathlib 23 file = pathlib.Path("./writed_file") 24 file.touch() 25 26def open_text(): 27 typ = [('html Files', '*.html;*.css;*.js')] 28 filepath = askopenfilename(filetypes=typ) 29 if not filepath: 30 return 31 text_widget.delete('1.0', tkinter.END) 32 with open(filepath, "r", encoding="utf-8") as open_file: 33 text = open_file.read() 34 text_widget.insert(tkinter.END, text) 35 root.title(f'colony - {filepath}') 36 37def naming_file_save(): 38 from tkinter.filedialog import asksaveasfilename 39 typ = [('html Files', '*.html;*.css;*.js')] 40 filepath = asksaveasfilename(defaultextension="txt",filetypes=typ) 41 if not filepath: 42 return 43 with open(filepath, "w") as save_file: 44 text = text_widget.get("1.0", tkinter.END) 45 save_file.write(text) 46 root.title(f"colony - {filepath}") 47 48 49def btn_click(): 50 t1, t2 = txt_1.get(), txt_2.get() 51 if t1[-1] == '/': 52 pass 53 else: 54 t1 += '/' 55 file_pass = t1 + t2 56 text = text_widget.get('1.0','end -1c') 57 f = open(file_pass, 'w') 58 f.write(text) 59 f.close() 60 61def test(): 62 print("test") 63 64###問題1 編集したファイルを上書き保存する関数を定義したい 65###問題2 新しいファイル(タブ)を新規作成する関数を定義したい 66#メニューバー 67menubar = tkinter.Menu(root) 68filemenu = tkinter.Menu(menubar, tearoff=0) 69 70 71 72filemenu = tkinter.Menu(menubar, tearoff=0) 73filemenu.add_command(label = "新規(N)",command = new_text) 74filemenu.add_command(label = "開く(O)...",command = open_text) 75filemenu.add_command(label = "上書き保存(S)") 76filemenu.add_command(label = "名前を付けて保存(A)...",command = naming_file_save) 77filemenu.add_separator() 78filemenu.add_command(label = "colonyの終了(X)", command = root.destroy) 79 80 81menubar.add_cascade(label = "ファイル(F)", menu = filemenu) 82 83editmenu = tkinter.Menu(menubar, tearoff=0) 84editmenu.add_command(label = "NONE") 85 86formatmenu = tkinter.Menu(menubar, tearoff = 0) 87editmenu.add_command(label = "基本のjavascript形式(alt+I+J)") 88editmenu.add_command(label = "基本のcss形式(alt+I+c)") 89editmenu.add_command(label = "基本のhtml形式(alt+I+h)") 90editmenu.add_command(label = "写真の挿入(alt+I+p)") 91editmenu.add_command(label = "動画の挿入(alt+I+M)") 92filemenu.add_separator() 93 94menubar.add_cascade(label = "オート入力(I)", menu = editmenu) 95 96viewmenu = tkinter.Menu(menubar, tearoff = 0) 97viewmenu.add_command(label = "NONE") 98menubar.add_cascade(label = "表示(V)", menu = viewmenu) 99 100root.config(menu = menubar) 101 102 103# Notebookウィジェットの作成 104notebook = ttk.Notebook(root) 105 106# タブの作成 107tab_one = tk.Frame(notebook, bg='white') 108tab_two = tk.Frame(notebook, bg="white") 109 110# notebookにタブを追加 111notebook.add(tab_one, text="text")###問題3 notebookの名前を、編集するファイル名にしたい 112notebook.add(tab_two, text="tab2") 113 114# tab_oneに配置するウィジェットの作成 115text_widget = tk.Text(tab_one,wrap = tk.NONE,font = my_font,borderwidth = 1) 116text_widget.configure(fg="#3A4861") 117root.columnconfigure(0, weight = 1) 118root.rowconfigure(0, weight = 1) 119yscroll = ttk.Scrollbar(tab_one, command=text_widget.yview,orient=tk.VERTICAL) 120xscroll = ttk.Scrollbar(tab_one, command=text_widget.xview, orient=tk.HORIZONTAL) 121text_widget['yscrollcommand'] = yscroll.set 122text_widget['xscrollcommand'] = xscroll.set 123 124# ウィジェットの配置 125notebook.pack(expand=True, fill='both') 126text_widget.place(width=1900,height=928) 127yscroll.pack(side=tk.RIGHT, fill = "y") 128xscroll.pack(side=tk.BOTTOM, fill = "x") 129root.title("テスト") 130root.geometry("1500x750") 131root.state("zoomed") 132root.mainloop()
###解決したいこと
現在発生している問題点
・notebook()の名前を、insert()したファイル名を表示させたい↓
・編集したファイルを上書き保存する関数を定義したい
です。
どちらもいろいろ調べてみましたが、どれも失敗したり、よく理解できなかったりと、難題です。
回答宜しくお願いします。
補足情報(FW/ツールのバージョンなど)
python ver.3.9
開発環境↓
atom エディタ
atom-runner
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/07/18 12:52