前提・実現したいこと
Python初心者です。
PCのキープレスに応じて様々な波長の音を鳴らすアプリを作っています。
Tkinterを用いてキープレスを検出し、画面の一部に表示する機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
press_key() missing 1 required positional argument: 'event'
該当のソースコード
Python
1import tkinter as tk 2from tkinter import * 3from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg 4from matplotlib.figure import Figure 5 6class Application(tk.Frame): 7 def __init__(self, master=None): 8 super().__init__(master) 9 self.master = master 10 self.master.title('Matplotlib in tkinter') 11 self.pack() 12 self.create_widgets() 13 self.press_key() 14 15 def create_widgets(self): 16#=== Canvas Frame 17 self.canvas_frame = tk.Frame(self.master) 18 self.canvas_frame.pack(side=tk.LEFT) 19#=== Presskey Frame 20 self.presskey_frame = tk.Frame(self.master) 21 self.presskey_frame.pack(side=tk.LEFT) 22#=== Canvas 23 self.canvas = FigureCanvasTkAgg(fig, self.canvas_frame) 24 self.canvas.draw() 25 self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True) 26 27#=== Press Key 28 self.labelframe = tk.LabelFrame(self.presskey_frame, text="Press key") 29 self.labelframe.pack(anchor=tk.NE) 30 31 self.label = tk.Label(self.labelframe, text="Label", anchor=tk.S) 32 self.label.pack() 33 34 self.buffer = StringVar() 35 self.buffer.set('') 36 self.press_key_label = tk.Label(self.labelframe, textvariable = self.buffer) 37 self.press_key_label.pack() 38 self.press_key_label.bind('<Any-KeyPress>', self.press_key) 39 self.press_key_label.focus_set 40 41 def press_key(self, event): 42 self.event_key = event.keysym 43 self.buffer.set('push key is %s' % self.event_key) 44 45 46 47fig = Figure(figsize=(5, 5), dpi=100) 48ax = fig.add_subplot(111) 49ax.set_xlim(-1.2,1.2) 50ax.set_ylim(-1.2,1.2) 51h, = ax.plot([],[], 'green') 52 53root = tk.Tk() 54app = Application(master=root) 55app.mainloop() 56
試したこと
キープレス検出のコードは下記を参考にしました。
http://bacspot.dip.jp/virtual_link/www/si.musashi-tech.ac.jp/new_www/Python_IntroTkinter/02/index-2.html
また、上記との違いとして、サイン波の表示等も画面上に実装したいことから、クラスを定義しています。
複数画面の実装方法は下記を参考にしました。
https://www.nakamuri.info/mw/index.php/いろいろなウィジェット
不要な部分を削除し、press_key関数の定義とFrameの定義を起こったところ、エラーが発生しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2021/09/04 03:46
2021/09/04 15:00