前提・実現したいこと
pythonで自分用の住所録を作っています。entry_1,_2,_3,****の様な連番添え字のENTRYへ、リスト型の値を表示させたい。地道に挿入の文章を書いた場合はできるのですが同じ作業の繰り返しの為、for文等で書けないものでしょうか。
但し、添え字の順番とリスト型のデータの順番は同一ではありません。
下記コードのdef insert_1(self)のこと(正常に動作)をdef insert_2(self)のような形式(エラーとなる)で記述したい。
宜しくお願いします。
該当のソースコード
ソースコード import tkinter as tk import tkinter.ttk as ttk class MainWindow(ttk.Frame): def __init__(self, parent): super(MainWindow, self).__init__(parent) self.parent = parent self.cleate_entry() # ********* ここが問題提起部分 # この実行結果が実現したい(同一作業の繰り返しで冗長) self.insert_1() # 例えばこの様に書けないののか?(プログラムは下部に有ります)。実際はエラーとなります #self.insert_2() def cleate_entry(self): self.frame1 = tk.Frame(pady=6) self.frame1.pack(fill="x") self.entry1 = tk.Entry(self.frame1,font=("",14),justify="center",width=60) self.entry1.pack(side="left") self.frame2 = tk.Frame(pady=6) self.frame2.pack(fill="x") self.entry2 = tk.Entry(self.frame2,font=("",14),justify="center",width=60) self.entry2.pack(side="left") self.frame3 = tk.Frame(pady=6) self.frame3.pack(fill="x") self.entry3 = tk.Entry(self.frame3,font=("",14),justify="center",width=60) self.entry3.pack(side="left") self.frame4 = tk.Frame(pady=6) self.frame4.pack(fill="x") self.entry4 = tk.Entry(self.frame4,font=("",14),justify="center",width=60) self.entry4.pack(side="left") def insert_1(self): # 表示する値 data = [12,'a',34,'b',56,'c',78,'d'] # ***** 表示する値は必ずしもdataリストの順番ではない self.entry1.configure(state='normal') self.entry1.delete(0, 'end') self.entry1.insert('end', data[1]) self.entry1.configure(state='readonly') self.entry2.configure(state='normal') self.entry2.delete(0, 'end') self.entry2.insert('end', data[0]) self.entry2.configure(state='readonly') self.entry3.configure(state='normal') self.entry3.delete(0, 'end') self.entry3.insert('end', data[5]) self.entry3.configure(state='readonly') self.entry4.configure(state='normal') self.entry4.delete(0, 'end') self.entry4.insert('end', data[3]) self.entry4.configure(state='readonly') def insert_2(self): # 表示する値 data = [12,'a',34,'b',56,'c',78,'d'] # 表示する値のdata内での位置 ichi = [1,0,5,3] # ***** 例えばこんな感じ for i in range(4): self.entry + str(i + 1).configure(state='normal') self.entry + str(i + 1).delete(0, 'end') self.entry + str(i + 1).insert('end', data[ichi[i]]) self.entry + str(i + 1).configure(state='readonly') def quit(self, event=None): # 終了時の処理 self.master.destroy() application = tk.Tk() application.geometry("1000x600") application.title('PyPost') window = MainWindow(application) application.protocol('WM_DELETE_WINDOW', window.quit) application.mainloop()
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/16 07:31