質問編集履歴

2

タイトル・プログラム・問題点の明確化

2022/06/02 09:40

投稿

tami.py
tami.py

スコア32

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.get()=="個人事業主":
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
- def radio_show_selected(event):
64
+ print(coltd_combobox.get())
65
+
66
+ elif coltd_combobox != values("個人事業主"):
62
- if radio == 0:
67
+ if radio== 0:
68
+ coltd_label_2= tk.Label(text="")
69
+ coltd_label_3= tk.Label(text="")
63
- None
70
+ print("2dayo")
64
- if radio== 1:
71
+ elif radio== 1:
65
- coltd_label_2.config(text=coltd_combobox.get())
72
+ coltd_label_2.config(text=class_combobox.get())
73
+ print("3da---")
66
- if radio == 2:
74
+ elif radio== 2:
67
- coltd_label_3.config(text=coltd_combobox.get())
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='会社形態なし:', font=font1)
129
+ ltd_label_1 = tkinter.Label(text='個人事業主:', font=font1)
120
- ltd_label_2 = tkinter.Label(text='会社形態 前:', font=font1)
130
+ ltd_label_2 = tkinter.Label(text='会社形態は、前:', font=font1)
121
- ltd_label_3 = tkinter.Label(text='会社形態 後:', font=font1)
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 =(coltd_rows)
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=70, y=90)
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

プログラムのラジオボタンのところを変更

2022/06/02 07:12

投稿

tami.py
tami.py

スコア32

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 coltd_show_selected(event):
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 coltd_label=="個人事業主":
79
+ if class_id =="":
39
- coltd_label.delete(0,tkinter.END)
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
- coltd_label.config(text=coltd_combobox.get())
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
- LBL_1 = tkinter.Label(text='取引区分の選択:', font=font1)
117
+ class_label_1 = tkinter.Label(text='取引区分の選択:', font=font1)
47
- LBL_2 = tkinter.Label(text='会社形態の選択:', font=font1)
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
- LBL_3 = tkinter.Label(text='会社形態のあるなし及び前・後:', font=font1)
121
+ ltd_label_3 = tkinter.Label(text='会社形態 後:', font=font1)
49
- LBL_4= tkinter.Label(text='会社名:', font=font1)
122
+ name_label= tkinter.Label(text='会社名:', font=font1)
50
- LBL_5= tkinter.Label(text='ふりがな:', font=font1)
123
+ kana_label= tkinter.Label(text='ふりがな:', font=font1)
51
- LBL_6= tkinter.Label(text=' *ふりがなは、「 ひらがな 」で入力してください:', font=font1)
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
- # ラジオボックスの作成 ltd_s 会社形態の前
143
+ # ラジオボックスの作成  会社形態の有無と会社名のか決めるラジオボタン
144
+ radio_ints = [0,1,2]
66
- radio_var = tk.IntVar()
145
+ radio_var=tkinter.IntVar()
67
- radio_var.set(0)
146
+ for i in range(len(radio_ints)):
68
- radio_0 = tk.Radiobutton( text="個人事業主", value=0,
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_2 = tk.Radiobutton( text="会社名の後", value=2,
148
+ radio.bind('<<RadioButtonSelected>>', radio_show_selected,)
73
- variable=radio_var,command = radio_var.set(2))
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
- txt4 = tkinter.Entry(textvariable=var_1, width=30)
155
+ name_entry = tkinter.Entry(textvariable=var_1, width=30)
81
- txt4.pack()
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
- txt5 = tkinter.Entry(textvariable=var_2, width=30)
161
+ kana_entry = tkinter.Entry(textvariable=var_2, width=30)
87
- txt5.pack()
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
- LBL_1.place(x=40, y=30)
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
- txt4.place(x=100, y=150)
176
+ name_entry.place(x=100, y=150)
177
+ kana_label.place(x=40, y=180)
101
- txt5.place(x=100, y=180)
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
- txt7.place(x=100, y=250)
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
- radio_0.place(x=220, y=90)
192
+ btn_toroku.place(x=230, y=310)
108
- radio_1.place(x=220, y=110)
193
+ btn_end.place(x=310, y=310)
109
- radio_2.place(x=220, y=130)
194
+
110
-
111
195
 
112
196
 
113
197
  root.mainloop()
114
198
 
199
+
115
200
  ```
116
201