おはようございます。
問題文読ませていただきました。
こんな感じでいかがでしょうか?
python
1
2import tkinter
3
4class Application(tkinter.Frame):
5 # entry Widgetを表す変数
6 txt = None
7 txt2 = None
8 txt3 = None
9
10 # エラーメッセージを表す変数
11 errMsg = None
12
13 # 重解の計算を行い、結果をlabel Widgetへ格納する関数
14 def calcInputData(self, txt, txt2, txt3):
15 res = int(txt2) ** 2 - 4 * int(txt) * int(txt3)
16
17 if res == 0:
18 self.errMsg.set("重解です")
19 elif res > 0:
20 self.errMsg.set("二つの実数解があります")
21 elif res < 0:
22 self.errMsg.set("解がありません")
23 else:
24 self.errMsg.set("エラー")
25
26 def check(self):
27 # entry Widgetの入力値を取得する。
28 txt = self.txt.get()
29 txt2 = self.txt2.get()
30 txt3 = self.txt3.get()
31
32 # 参考 : https://note.nkmk.me/python-str-num-determine/
33 # 文字列が十進数字か判定を行う。
34 if not txt.isdecimal() or not txt2.isdecimal() or not txt3.isdecimal():
35 self.errMsg.set("数字を入れてください")
36 else:
37 self.calcInputData(txt, txt2, txt3)
38
39 def __init__(self, master=None):
40 # Windowの初期設定を行う。
41 super().__init__(master)
42
43 # Windowの画面サイズを設定する。
44 # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
45 self.master.geometry('250x250')
46
47 # Windowを親要素として、frame Widget(Frame)を作成する。
48 # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
49 frame = tkinter.Frame(self.master)
50 # Windowを親要素とした場合に、frame Widget(Frame)をどのように配置するのか?
51 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
52 frame.grid()
53
54 # frame Widget(Frame)を親要素として、label Widgetを作成する。
55 # text : テキスト情報
56 # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
57 lbl0 = tkinter.Label(frame, text='ax^2 + bx + c = 0')
58 # frame Widget(Frame)を親要素とした場合に、label Widgetをどのように配置するのか?
59 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
60 lbl0.grid(row=0, columnspan=2)
61
62 # label用の文字列変数を用意する。
63 # StringVar()について : https://kuroro.blog/python/K53voPjJuKFfYrjmP8FP/
64 self.errMsg = tkinter.StringVar()
65 self.errMsg.set("数字を入力してください")
66 # frame Widget(Frame)を親要素として、label Widgetを作成する。
67 # textvariable : labelに格納される値を、変数で管理するための設定
68 # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
69 b = tkinter.Label(frame, textvariable=self.errMsg)
70 # frame Widget(Frame)を親要素とした場合に、label Widgetをどのように配置するのか?
71 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
72 b.grid(row=1, columnspan=2)
73
74 # frame Widget(Frame)を親要素として、label Widgetを作成する。
75 # text : テキスト情報
76 # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
77 lbl = tkinter.Label(frame, text='a=')
78 # frame Widget(Frame)を親要素とした場合に、label Widgetをどのように配置するのか?
79 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
80 lbl.grid(row=2, column=0)
81
82 # frame Widget(Frame)を親要素として、entry Widgetを作成する。
83 # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/
84 self.txt = tkinter.Entry(frame)
85 # frame Widget(Frame)を親要素とした場合に、entry Widgetをどのように配置するのか?
86 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
87 self.txt.grid(row=2, column=1)
88
89 # frame Widget(Frame)を親要素として、label Widgetを作成する。
90 # text : テキスト情報
91 # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
92 lbl2 = tkinter.Label(frame, text='b=')
93 # frame Widget(Frame)を親要素とした場合に、label Widgetをどのように配置するのか?
94 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
95 lbl2.grid(row=3, column=0)
96
97 # frame Widget(Frame)を親要素として、entry Widgetを作成する。
98 # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/
99 self.txt2 = tkinter.Entry(frame)
100 # frame Widget(Frame)を親要素とした場合に、entry Widgetをどのように配置するのか?
101 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
102 self.txt2.grid(row=3, column=1)
103
104 # frame Widget(Frame)を親要素として、label Widgetを作成する。
105 # text : テキスト情報
106 # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
107 lbl3 = tkinter.Label(frame, text='c=')
108 # frame Widget(Frame)を親要素とした場合に、label Widgetをどのように配置するのか?
109 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
110 lbl3.grid(row=4, column=0)
111
112 # frame Widget(Frame)を親要素として、entry Widgetを作成する。
113 # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/
114 self.txt3 = tkinter.Entry(frame)
115 # frame Widget(Frame)を親要素とした場合に、entry Widgetをどのように配置するのか?
116 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
117 self.txt3.grid(row=4, column=1)
118
119 # frame Widget(Frame)を親要素として、button Widgetを作成する。
120 # text : テキスト情報
121 # command : ボタンをクリックした時に、実行する関数を設定。self.checkとする。
122 # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
123 btn = tkinter.Button(frame, text="判別", command=self.check)
124 # frame Widget(Frame)を親要素とした場合に、button Widgetをどのように配置するのか?
125 # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
126 btn.grid(row=5, columnspan=2)
127
128if __name__ == "__main__":
129 root = tkinter.Tk()
130
131 app = Application(master=root)
132 # Windowをループさせて、継続的にWindow表示させる。
133 # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
134 app.mainloop()
135
ご確認のほど、よろしくお願いいたします。????♂️
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。