実現したいこと
よろしくお願いします。
ラジオボタンを選択した時、テキストボックスを有効にして
別のラジオボタンが選択されているときは、テキストボックスを無効にしたい。
前提
classを使ったGUIを勉強しているのですが、
classを使うとエラーが出てしまう動きません。
エラーの原因と対応策について教えて頂きたいです.
よろしくお願いします.
発生している問題・エラーメッセージ
AttributeError: 'Frame5' object has no attribute 'entry1'
該当のソースコード
import tkinter import tkinter.ttk as ttk class Frame5(tkinter.Frame): def __init__(self, master): super().__init__(master) self.ra_v = tkinter.IntVar(value=1) self.ra_v.set(1) textEntry = tkinter.StringVar() textEntry.set(100) radio1 = tkinter.Radiobutton( self, text="A", command = self.radio_click, # クリックされたときに呼ばれるメソッド variable = self.ra_v, value=1, ) radio1.grid(column=0,row=0,padx=10) radio2 = tkinter.Radiobutton( self, text="B", command = self.radio_click, # クリックされたときに呼ばれるメソッド variable = self.ra_v, value=2, ) radio2.grid(column=0,row=1) entry1 = tkinter.Entry( self, textvariable = textEntry #表示種類 ) entry1.grid(column=1,row=0) entry1['state'] = tkinter.DISABLED entry2 = tkinter.Entry( self, ) entry2.insert(0, "名前") #表示種類 entry2.grid(column=1,row=1) entry2['state'] = tkinter.NORMAL # entry1 def radio_click(self): if self.entry1['state'] == 'disabled': self.entry1['state'] = 'normal' else: self.entry1['state'] = 'disabled' def radio_click1(self): # ラジオボタンの値を取得 value = self.ra_v.get() print(f"ラジオボタンの値は {value} です") # メインウィンドウを作成 app = tkinter.Tk() app.minsize(width=350, height=400) # メインウィンドウ上にフレームを作成 frame5 = Frame5(app) # フレームを配置 frame5.place(relx=0.1,rely=0.7) # メインループ app.mainloop()
試したこと
このサイトなどで、
https://squareiooi.com/archives/python/115
(これはボタンですが)
classを使わなければ、動くのはためしました。
また、ラジオボタンのcommandを
command = self.radio_click1 に変更すると
でラジオボタンの値が取得出来きます。
補足情報(FW/ツールのバージョンなど)
Python 3.11.1です。

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/04/22 12:58