前提・実現したいこと
Python(GUI)の学習を始めたところです。
Toplevelで作成したサブウィンドウにComboboxを配置しました。
そのComboboxの値を取得したいのですが、エラーになってしまいます。
サブウィンドウ、Comboboxは正常に表示され、Comboboxを選択した時にエラーになります。
発生している問題・エラーメッセージ
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Junichiro Hara\AppData\Local\Programs\Python\Python38\lib\tkinter_init_.py", line 1883, in call
return self.func(*args)
TypeError: get_bititem() missing 1 required positional argument: 'event'
該当のソースコード
import tkinter as tk
import tkinter.ttk as ttk
import sys
from tkinter.filedialog import askopenfilename
from tkinter import *
class mainwindow(tk.Frame):
def init(self,master=None):
super().init(master)
self.master.title("TEST") # ウィンドウタイトルの設定
self.master.geometry("600x600") # ウィンドウサイズの設定
self.pack() # メインフレームの配置 self.create_menu() # メニューの生成 # メニューの生成 def create_menu(self): # 設定ウィンドウを開く def winsetting(): settingwin=Toplevel(self) settingwin.title("SUB") settingwin.geometry("300x300") # modalに設定(このウィンドウが閉じるまではほかのウィンドウ操作をできなくする) settingwin.grab_set() # 部品の配置 label_bittype=tk.Label(settingwin,text="bit device Type") label_bittype.place(x=5,y=70) bit_type=ttk.Combobox(settingwin,values=("A","B","C","D","E"),state="readonly") bit_type.bind("<<ComboboxSelected>>",get_bititem) bit_type.place(x=100,y=70) # コンボボックスの値を取得(ここでエラーが発生します) def get_bititem(self,event): print(bit_type.get()) #メニューバーの作成 self.menubar=tk.Menu(self) # Menuクラスからmenubarインスタンスを生成 root.config(menu=self.menubar)# メニューバーの配置 self.setting_menu=tk.Menu(self.menubar,tearoff=0) #メニューバーに大項目"設定"を生成 self.menubar.add_cascade(label="設定",menu=self.setting_menu) # 大項目"設定"を設置 self.setting_menu.add_command(label="設定",command=winsetting) # 小項目"設定"を割り当て
if name == "main":
root=tk.Tk()
app=mainwindow(master=root)
app.mainloop()
試したこと
サブウィンドウをクラス化して見ようとトライしましたが、断念しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー