前提・実現したいこと
GUI画面からデータを入力し、エクセルファイルを検索結果を返す
GUI画面の入力データをグローバル変数WORDに保存し、pw_kensaku2で検索キーとして使用したいのですが
wordが見つからないというエラーメッセージなってしまいます。グローバル変数の取扱が悪いのだと思いますが、原因がわかりません。
発生している問題・エラーメッセージ
<<検索終了>> Traceback (most recent call last): File "/home/kimura/ドキュメント/python/pwsearch/pw_kensaku.py", line 46, in <module> h.pw_kn() File "/home/kimura/ドキュメント/python/pwsearch/pw_kensaku.py", line 18, in pw_kn data = gui_gamen4.pw_gamen.word AttributeError: 'function' object has no attribute 'word'エラーメッセージ
該当のソースコード
言語名
python
ソースコード
<画面作成>
python
1def pw_gamen(): 2 3 import tkinter as tk 4 root = tk.Tk() 5 root.geometry("300x100") 6 7 entry = tk.Entry() 8 entry.place(x=20, y=30) 9 10 button = tk.Button(text="OK") 11 button.place(x=150, y=26) 12 13 def click(): 14 global word 15 word = entry.get() 16 entry.delete(0, tk.END) 17 label = tk.Label(text=word) 18 label.place(x=20, y=50) 19 20 return word 21 button["command"] = click #関数と関連付ける 22 print(pw_gamen.word) 23 root.mainloop() 24 25if __name__ == '__main__': 26 pw_gamen()
<エクセル編集>
python
1global word 2import openpyxl 3import gui_gamen4 4class Hoge: 5 def pw_kn(self): 6 wb = openpyxl.load_workbook('********.xlsx',data_only=True) 7 lastrow = wb['*****'].max_row 8 data = gui_gamen4.pw_gamen.word 9 print(data) 10 myRanges = wb['*****']['A2:A' + str(lastrow)] 11 for rows in myRanges: 12 for cell in rows: 13 if data in cell.value: 14 a = cell.offset(0,1).value 15 b = cell.offset(0,2).value 16 c = cell.value 17 print(c," ",a," ",b) 18 19print("<<検索終了>>") 20if __name__ == '__main__': 21 h= Hoge() 22 h.pw_kn() 23 pw_gamen()
試したこと
個々のモジュールでは動作確認が取れています。
検索モジュールはinputコマンドで値を入力し確認しました。
補足情報(FW/ツールのバージョンなど)
Python 3.6.9
ここにより詳細な情報を記載してください。
python初心者です。とんでもない勘違いをしてるかもしれませんがよろしくお願いします。
pythonならばインデントをつけないと。
pythonのコードの一番最初の行のすぐ上に
```python
だけの行を追加してください
また、pythonのコードの一番最後の行のすぐ下に
```
だけの行を追加してください
または、
https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif
を見て、そのようにしてみてください
現状、コードがとても読み辛いです
質問にコードを載せる際に上記をやってくれたら、他人がコードを読みやすくなり、コードの実行による現象確認もやりやすくなるので、回答されやすくなります
回答2件
あなたの回答
tips
プレビュー