質問編集履歴
2
タイトル・プログラム・問題点の明確化
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
python3.9 if構文でcomboboxから取得した値と比較したい値が一致してくれない
|
test
CHANGED
@@ -10,7 +10,11 @@
|
|
10
10
|
②ラジオボタンで”会社の前”を選択したら、プルダウンで選択した項目を会社名ラベルの前に表示。”会社の後ろ”を選択したら、会社名ラベルの後ろに表示をさせたい
|
11
11
|
というところです。
|
12
12
|
|
13
|
+
問題なのはif構文というところまでは、わかってきました。
|
13
|
-
|
14
|
+
if coltd_combobox is values("個人事業主"):
|
15
|
+
上記の個人事業主を比較するとエラーになってしまいます。
|
16
|
+
valuesではなく、他のものに変えればいいのでしょうか?
|
17
|
+
|
14
18
|
|
15
19
|
```python3.9.10
|
16
20
|
# 取引区分・会社形態、及び有無・会社名・ふりがなの登録フォーム
|
@@ -20,7 +24,6 @@
|
|
20
24
|
from tkinter import ttk
|
21
25
|
from tkinter import Tk, font
|
22
26
|
from tkinter import messagebox
|
23
|
-
from click import command
|
24
27
|
import mysql.connector as mysql
|
25
28
|
from sqlalchemy import values
|
26
29
|
|
@@ -47,24 +50,32 @@
|
|
47
50
|
cur.execute(sql_2)
|
48
51
|
coltd_rows= cur.fetchall()
|
49
52
|
|
53
|
+
|
50
54
|
# 取引区分の選択・下段表示
|
51
55
|
def class_show_selected(event):
|
52
56
|
class_label_2.config(text=class_combobox.get())
|
53
57
|
|
54
|
-
|
58
|
+
# ★★★問題と思われる個所★★★
|
55
59
|
# 会社形態の選択・下段表示、及び有無
|
56
60
|
def coltd_show_selected(event):
|
57
|
-
if coltd_combobox
|
61
|
+
if coltd_combobox is values("個人事業主"): #★★
|
58
62
|
coltd_label_2= tk.Label(text="")
|
59
63
|
coltd_label_3= tk.Label(text="")
|
60
|
-
Break
|
61
|
-
|
64
|
+
print(coltd_combobox.get())
|
65
|
+
|
66
|
+
elif coltd_combobox != values("個人事業主"):
|
62
|
-
if radio
|
67
|
+
if radio== 0:
|
68
|
+
coltd_label_2= tk.Label(text="")
|
69
|
+
coltd_label_3= tk.Label(text="")
|
63
|
-
|
70
|
+
print("2dayo")
|
64
|
-
if radio== 1:
|
71
|
+
elif radio== 1:
|
65
|
-
coltd_label_2.config(text=c
|
72
|
+
coltd_label_2.config(text=class_combobox.get())
|
73
|
+
print("3da---")
|
66
|
-
if radio
|
74
|
+
elif radio== 2:
|
67
|
-
coltd_label_3.config(text=c
|
75
|
+
coltd_label_3.config(text=class_combobox.get())
|
76
|
+
print("dekita!!")
|
77
|
+
else:
|
78
|
+
print("エラーです。エラーです。")
|
68
79
|
Break
|
69
80
|
|
70
81
|
|
@@ -72,7 +83,7 @@
|
|
72
83
|
def touroku_sql():
|
73
84
|
class_id = class_combobox.get()
|
74
85
|
coltd_id= class_combobox.get()
|
75
|
-
ltd_s = radio.get()
|
86
|
+
ltd_s = radio_var.get()
|
76
87
|
name = name_entry.get()
|
77
88
|
kana = kana_entry.get()
|
78
89
|
|
@@ -101,7 +112,6 @@
|
|
101
112
|
messagebox.showinfo("メッセージ", "登録しました")
|
102
113
|
print("1件登録しました")
|
103
114
|
|
104
|
-
|
105
115
|
# ドメインエラーなどにより登録できなかった場合のエラー処理
|
106
116
|
except:
|
107
117
|
print("エラーにより登録できませんでした")
|
@@ -116,9 +126,9 @@
|
|
116
126
|
font1 = font.Font(size=10)
|
117
127
|
class_label_1 = tkinter.Label(text='取引区分の選択:', font=font1)
|
118
128
|
coltd_label_1 = tkinter.Label(text='会社形態の選択:', font=font1)
|
119
|
-
ltd_label_1 = tkinter.Label(text='
|
129
|
+
ltd_label_1 = tkinter.Label(text='個人事業主:', font=font1)
|
120
|
-
ltd_label_2 = tkinter.Label(text='会社形態
|
130
|
+
ltd_label_2 = tkinter.Label(text='会社形態は、前:', font=font1)
|
121
|
-
ltd_label_3 = tkinter.Label(text='会社形態
|
131
|
+
ltd_label_3 = tkinter.Label(text='会社形態は、後:', font=font1)
|
122
132
|
name_label= tkinter.Label(text='会社名:', font=font1)
|
123
133
|
kana_label= tkinter.Label(text='ふりがな:', font=font1)
|
124
134
|
text_tyu= tkinter.Label(text=' *ふりがなは、「 ひらがな 」で入力してください:', font=font1)
|
@@ -133,19 +143,18 @@
|
|
133
143
|
#取引区分と会社形態 プルダウンの中身を定義
|
134
144
|
class_list =(campany_class_rows)
|
135
145
|
class_combobox = ttk.Combobox(values=class_list)
|
136
|
-
class_combobox.bind('<<ComboboxSelected>>',class_show_selected)
|
146
|
+
class_combobox.bind('<<ComboboxSelected>>',class_show_selected,)
|
137
|
-
|
147
|
+
|
138
|
-
coltd_list =(
|
148
|
+
coltd_list =("個人事業主","株式会社","有限会社","合同会社")
|
139
149
|
coltd_combobox = ttk.Combobox(values=coltd_list)
|
140
|
-
coltd_combobox.bind('<<ComboboxSelected>>',coltd_show_selected)
|
150
|
+
coltd_combobox.bind('<<ComboboxSelected>>',coltd_show_selected,)
|
141
151
|
|
142
152
|
|
143
153
|
# ラジオボックスの作成 会社形態の有無と会社名の前か後か決めるラジオボタン
|
144
154
|
radio_ints = [0,1,2]
|
145
155
|
radio_var=tkinter.IntVar()
|
146
156
|
for i in range(len(radio_ints)):
|
147
|
-
radio = tk.Radiobutton( value=i, variable=radio_var)
|
157
|
+
radio = tk.Radiobutton( value=i, variable=radio_var,text= radio_ints[i])
|
148
|
-
radio.bind('<<RadioButtonSelected>>', radio_show_selected,)
|
149
158
|
radio.place(x=170, y=90 + (i*20))
|
150
159
|
|
151
160
|
|
@@ -169,7 +178,7 @@
|
|
169
178
|
class_combobox.place(x=150, y=30)
|
170
179
|
coltd_label_1.place(x=40, y=60)
|
171
180
|
coltd_combobox.place(x=150, y=60 )
|
172
|
-
ltd_label_1.place(x=
|
181
|
+
ltd_label_1.place(x=92, y=90)
|
173
182
|
ltd_label_2.place(x=70, y=110)
|
174
183
|
ltd_label_3.place(x=70, y=130)
|
175
184
|
name_label.place(x=40, y=150)
|
@@ -197,5 +206,6 @@
|
|
197
206
|
root.mainloop()
|
198
207
|
|
199
208
|
|
209
|
+
|
200
210
|
```
|
201
211
|
|
1
プログラムのラジオボタンのところを変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -13,14 +13,14 @@
|
|
13
13
|
ネットで色々調べてはいるのですが、なかなか該当するものに出会うことができず難航しています。
|
14
14
|
|
15
15
|
```python3.9.10
|
16
|
-
|
16
|
+
# 取引区分・会社形態、及び有無・会社名・ふりがなの登録フォーム
|
17
|
-
|
18
17
|
from ast import Break
|
19
18
|
import tkinter
|
20
19
|
import tkinter as tk
|
21
20
|
from tkinter import ttk
|
22
21
|
from tkinter import Tk, font
|
23
22
|
from tkinter import messagebox
|
23
|
+
from click import command
|
24
24
|
import mysql.connector as mysql
|
25
25
|
from sqlalchemy import values
|
26
26
|
|
@@ -28,89 +28,174 @@
|
|
28
28
|
root.title("取引企業登録フォーム")
|
29
29
|
root.geometry("400x350")
|
30
30
|
|
31
|
-
|
31
|
+
# mysqlにconnect
|
32
|
-
|
32
|
+
con = mysql.connect(
|
33
|
+
database = 'seisan_system',
|
34
|
+
user = 'root',
|
35
|
+
password = 'mta969696',
|
36
|
+
host = 'localhost',
|
37
|
+
port = '3306',
|
38
|
+
)
|
39
|
+
|
40
|
+
# MYSQLからカラムの取得
|
41
|
+
cur = con.cursor()
|
42
|
+
sql= "select campany_class_name from tb_campany_class"
|
43
|
+
cur.execute(sql)
|
44
|
+
campany_class_rows= cur.fetchall()
|
45
|
+
|
46
|
+
sql_2= "select coltd_name from tb_coltd"
|
47
|
+
cur.execute(sql_2)
|
48
|
+
coltd_rows= cur.fetchall()
|
49
|
+
|
50
|
+
# 取引区分の選択・下段表示
|
33
51
|
def class_show_selected(event):
|
34
|
-
class_label.config(text=class_combobox.get())
|
52
|
+
class_label_2.config(text=class_combobox.get())
|
53
|
+
|
54
|
+
|
55
|
+
# 会社形態の選択・下段表示、及び有無
|
56
|
+
def coltd_show_selected(event):
|
57
|
+
if coltd_combobox.get()=="個人事業主":
|
58
|
+
coltd_label_2= tk.Label(text="")
|
59
|
+
coltd_label_3= tk.Label(text="")
|
60
|
+
Break
|
61
|
+
def radio_show_selected(event):
|
62
|
+
if radio == 0:
|
63
|
+
None
|
64
|
+
if radio== 1:
|
65
|
+
coltd_label_2.config(text=coltd_combobox.get())
|
66
|
+
if radio == 2:
|
67
|
+
coltd_label_3.config(text=coltd_combobox.get())
|
68
|
+
Break
|
35
69
|
|
70
|
+
|
36
|
-
|
71
|
+
# 登録ボタンを押した際のテキストを読み取るgetメソッド
|
37
|
-
def
|
72
|
+
def touroku_sql():
|
73
|
+
class_id = class_combobox.get()
|
74
|
+
coltd_id= class_combobox.get()
|
75
|
+
ltd_s = radio.get()
|
76
|
+
name = name_entry.get()
|
77
|
+
kana = kana_entry.get()
|
78
|
+
|
38
|
-
if c
|
79
|
+
if class_id =="":
|
39
|
-
|
80
|
+
raise messagebox.showerror("メッセージ", "取引区分を選択してください")
|
40
|
-
Break
|
81
|
+
Break
|
82
|
+
if coltd_id =="":
|
83
|
+
raise messagebox.showerror("メッセージ", "会社形態を選択してください")
|
84
|
+
Break
|
85
|
+
if name =="":
|
86
|
+
raise messagebox.showerror("メッセージ", "会社名を入力してください")
|
87
|
+
Break
|
88
|
+
if kana =="":
|
89
|
+
raise messagebox.showerror("メッセージ", "ふりがなを入力してください")
|
90
|
+
Break
|
91
|
+
|
92
|
+
# SQLを発行してDBへ登録
|
93
|
+
try:
|
94
|
+
cur = con.cursor()
|
95
|
+
cur.execute("""
|
96
|
+
INSERT INTO tb_campany(campany_class_id, ltd_s, coltd_id,\
|
97
|
+
campany_name, campany_kana)
|
98
|
+
VALUES('{}','{}','{}','{}','{}');
|
41
|
-
|
99
|
+
""".format(class_id, ltd_s, coltd_id, name, kana))
|
42
|
-
|
100
|
+
cur.execute("COMMIT;")
|
101
|
+
messagebox.showinfo("メッセージ", "登録しました")
|
102
|
+
print("1件登録しました")
|
103
|
+
|
104
|
+
|
105
|
+
# ドメインエラーなどにより登録できなかった場合のエラー処理
|
106
|
+
except:
|
107
|
+
print("エラーにより登録できませんでした")
|
108
|
+
|
109
|
+
|
110
|
+
# 画面を閉じる関数を与える
|
111
|
+
def return_view():
|
112
|
+
root.destroy()
|
113
|
+
|
43
114
|
|
44
115
|
#各種ラベルの設定
|
45
116
|
font1 = font.Font(size=10)
|
46
|
-
|
117
|
+
class_label_1 = tkinter.Label(text='取引区分の選択:', font=font1)
|
47
|
-
|
118
|
+
coltd_label_1 = tkinter.Label(text='会社形態の選択:', font=font1)
|
119
|
+
ltd_label_1 = tkinter.Label(text='会社形態なし:', font=font1)
|
120
|
+
ltd_label_2 = tkinter.Label(text='会社形態 前:', font=font1)
|
48
|
-
|
121
|
+
ltd_label_3 = tkinter.Label(text='会社形態 後:', font=font1)
|
49
|
-
|
122
|
+
name_label= tkinter.Label(text='会社名:', font=font1)
|
50
|
-
|
123
|
+
kana_label= tkinter.Label(text='ふりがな:', font=font1)
|
51
|
-
|
124
|
+
text_tyu= tkinter.Label(text=' *ふりがなは、「 ひらがな 」で入力してください:', font=font1)
|
125
|
+
|
126
|
+
# 各種エントリー等を入力した際の入力内容確認用ラベル
|
52
|
-
class_label= tkinter.Label()
|
127
|
+
class_label_2= tkinter.Label() # 取引区分を選択した際用ラベル
|
53
|
-
coltd_label= tkinter.Label()
|
128
|
+
coltd_label_2= tkinter.Label() # 会社形態を選択した際の表示用ラベル(前用)
|
129
|
+
coltd_label_3= tkinter.Label() # 会社形態を選択した際の表示用ラベル(後用)
|
130
|
+
# 会社名とふりがなは、双方のEntryを作成するところにある
|
131
|
+
|
54
132
|
|
55
133
|
#取引区分と会社形態 プルダウンの中身を定義
|
56
|
-
class_list =(
|
134
|
+
class_list =(campany_class_rows)
|
57
135
|
class_combobox = ttk.Combobox(values=class_list)
|
58
|
-
class_combobox.bind('<<ComboboxSelected>>',class_show_selected
|
136
|
+
class_combobox.bind('<<ComboboxSelected>>',class_show_selected)
|
59
|
-
|
137
|
+
|
60
|
-
coltd_list =(
|
138
|
+
coltd_list =(coltd_rows)
|
61
139
|
coltd_combobox = ttk.Combobox(values=coltd_list)
|
62
|
-
coltd_combobox.bind('<<ComboboxSelected>>',coltd_show_selected
|
140
|
+
coltd_combobox.bind('<<ComboboxSelected>>',coltd_show_selected)
|
63
141
|
|
64
142
|
|
65
|
-
# ラジオボックスの作成
|
143
|
+
# ラジオボックスの作成 会社形態の有無と会社名の前か後か決めるラジオボタン
|
144
|
+
radio_ints = [0,1,2]
|
66
|
-
radio_var
|
145
|
+
radio_var=tkinter.IntVar()
|
67
|
-
radio_
|
146
|
+
for i in range(len(radio_ints)):
|
68
|
-
radio
|
147
|
+
radio = tk.Radiobutton( value=i, variable=radio_var)
|
69
|
-
variable=radio_var,command = radio_var.set(0))
|
70
|
-
radio_1 = tk.Radiobutton( text="会社名の前", value=1,
|
71
|
-
variable=radio_var,command = radio_var.set(1))
|
72
|
-
radio
|
148
|
+
radio.bind('<<RadioButtonSelected>>', radio_show_selected,)
|
73
|
-
|
149
|
+
radio.place(x=170, y=90 + (i*20))
|
74
|
-
|
150
|
+
|
151
|
+
|
75
|
-
# 会社名・ふりがな
|
152
|
+
# 会社名・ふりがな用エントリーボックス・入力後の確認用ラベル作成
|
76
|
-
|
153
|
+
# 会社名
|
77
154
|
var_1=tkinter.StringVar(root)
|
78
|
-
txt9 = tkinter.Label(textvariable=var_1)
|
79
|
-
txt9.pack()
|
80
|
-
t
|
155
|
+
name_entry = tkinter.Entry(textvariable=var_1, width=30)
|
81
|
-
t
|
156
|
+
name_entry.pack()
|
82
|
-
|
157
|
+
name_labal_2 = tkinter.Label(textvariable=var_1)
|
158
|
+
name_labal_2.pack()
|
159
|
+
# ふりがな
|
83
160
|
var_2=tkinter.StringVar(root)
|
84
|
-
txt7 = tkinter.Label(textvariable=var_2)
|
85
|
-
txt7.pack()
|
86
|
-
t
|
161
|
+
kana_entry = tkinter.Entry(textvariable=var_2, width=30)
|
87
|
-
t
|
162
|
+
kana_entry.pack()
|
163
|
+
kana_labal_2 = tkinter.Label(textvariable=var_2)
|
164
|
+
kana_labal_2.pack()
|
88
165
|
|
89
166
|
|
90
167
|
#各種ラベル等の配置
|
91
|
-
|
168
|
+
class_label_1.place(x=40, y=30)
|
92
|
-
LBL_2.place(x=40, y=60)
|
93
|
-
LBL_3.place(x=40, y=90)
|
94
|
-
LBL_4.place(x=40, y=150)
|
95
|
-
LBL_5.place(x=40, y=180)
|
96
|
-
LBL_6.place(x=40, y=210)
|
97
|
-
|
98
169
|
class_combobox.place(x=150, y=30)
|
170
|
+
coltd_label_1.place(x=40, y=60)
|
99
171
|
coltd_combobox.place(x=150, y=60 )
|
172
|
+
ltd_label_1.place(x=70, y=90)
|
173
|
+
ltd_label_2.place(x=70, y=110)
|
174
|
+
ltd_label_3.place(x=70, y=130)
|
175
|
+
name_label.place(x=40, y=150)
|
100
|
-
t
|
176
|
+
name_entry.place(x=100, y=150)
|
177
|
+
kana_label.place(x=40, y=180)
|
101
|
-
t
|
178
|
+
kana_entry.place(x=100, y=180)
|
179
|
+
text_tyu.place(x=40, y=210)
|
102
|
-
class_label.place(x=20, y=250)
|
180
|
+
class_label_2.place(x=20, y=250)
|
103
|
-
|
181
|
+
kana_labal_2.place(x=100, y=250)
|
104
|
-
|
105
|
-
txt9.place(x=100, y=280)
|
106
|
-
coltd_label.place(x=20, y=280)
|
182
|
+
coltd_label_2.place(x=20, y=280)
|
183
|
+
name_labal_2.place(x=100, y=280)
|
184
|
+
coltd_label_3.place(x=250, y=280)
|
185
|
+
|
186
|
+
|
187
|
+
# 登録・閉じるボタン作成
|
188
|
+
btn_toroku = tkinter.Button(
|
189
|
+
text='登録', width=8, command=touroku_sql)
|
190
|
+
btn_end = tkinter.Button(
|
191
|
+
text='閉じる', width=8, command=return_view)
|
107
|
-
r
|
192
|
+
btn_toroku.place(x=230, y=310)
|
108
|
-
|
193
|
+
btn_end.place(x=310, y=310)
|
109
|
-
|
194
|
+
|
110
|
-
|
111
195
|
|
112
196
|
|
113
197
|
root.mainloop()
|
114
198
|
|
199
|
+
|
115
200
|
```
|
116
201
|
|