質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

415閲覧

python3.9 if構文でcomboboxから取得した値と比較したい値が一致してくれない

tami.py

総合スコア32

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2022/06/02 04:51

編集2022/06/02 09:40

会社の登録をするフォームを作成しています。
作成しているのは、
取引区分・会社形態(株式や有限・合同会社など)と
その会社形態を社名の前につけるか後ろにつけるか
もしくは、つけない(個人事業主だと会社形態がないため)を
実装したい試みています。

今問題になっているのは、
①ラジオボタンで”個人事業主”を選択したら、会社形態は、表示しない
②ラジオボタンで”会社の前”を選択したら、プルダウンで選択した項目を会社名ラベルの前に表示。”会社の後ろ”を選択したら、会社名ラベルの後ろに表示をさせたい
というところです。

問題なのはif構文というところまでは、わかってきました。
if coltd_combobox is values("個人事業主"):
上記の個人事業主を比較するとエラーになってしまいます。
valuesではなく、他のものに変えればいいのでしょうか?

python3.9.10

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

変更したあたりのコードを記載しておきます。
radiobuttonの使い方、if分の使い方が、全くなっていませんでした。

python3.9.10

1# 会社形態の選択・下段表示、及び有無 2def radio_show_selected(): 3 if radio_var.get() == 0: 4 coltd_label_2.config(text="") 5 coltd_label_3.config(text="") 6 if radio_var.get() == 1: 7 coltd_label_2.config(text=coltd_combobox.get()) 8 coltd_label_3.config(text="") 9 if radio_var.get() == 2: 10 coltd_label_3.config(text=coltd_combobox.get()) 11 coltd_label_2.config(text="") 12 13 14 15# 登録ボタンを押した際のテキストを読み取るgetメソッド 16def touroku_sql(): 17 class_id = class_combobox.get() 18 coltd_id= coltd_combobox.get() 19 ltd_s = radio_var.get() 20 name = name_entry.get() 21 kana = kana_entry.get() 22 23 if class_id =="": 24 raise messagebox.showerror("メッセージ", "取引区分を選択してください") 25 Break 26 if coltd_id =="": 27 raise messagebox.showerror("メッセージ", "会社形態を選択してください") 28 Break 29 if name =="": 30 raise messagebox.showerror("メッセージ", "会社名を入力してください") 31 Break 32 if kana =="": 33 raise messagebox.showerror("メッセージ", "ふりがなを入力してください") 34 Break 35 36 # SQLを発行してDBへ登録 37 try: 38 cur = con.cursor() 39 cur.execute(""" 40 INSERT INTO tb_campany(campany_class_id, ltd_s, coltd_id,\ 41 campany_name, campany_kana) 42 VALUES('{}','{}','{}','{}','{}'); 43 """.format(class_id, ltd_s, coltd_id, name, kana)) 44 cur.execute("COMMIT;") 45 messagebox.showinfo("メッセージ", "登録しました") 46 47 48 # ドメインエラーなどにより登録できなかった場合のエラー処理 49 except: 50 print("エラーにより登録できませんでした") 51 52 53# 画面を閉じる関数を与える 54def return_view(): 55 root.destroy() 56 57 58#各種ラベルの設定 59font1 = font.Font(size=10) 60class_label_1 = tkinter.Label(text='取引区分の選択:', font=font1) 61coltd_label_1 = tkinter.Label(text='会社形態の選択:', font=font1) 62ltd_label = tkinter.Label(text='会社形態のあるなし及び前・後:', font=font1) 63name_label= tkinter.Label(text='会社名:', font=font1) 64kana_label= tkinter.Label(text='ふりがな:', font=font1) 65text_tyu= tkinter.Label(text=' *ふりがなは、「 ひらがな 」で入力してください:', font=font1) 66 67# 各種エントリー等を入力した際の入力内容確認用ラベル 68class_label_2= tkinter.Label() # 取引区分を選択した際用ラベル 69coltd_label_2= tkinter.Label() # 会社形態を選択した際の表示用ラベル(前用) 70coltd_label_3= tkinter.Label() # 会社形態を選択した際の表示用ラベル(後用) 71 # 会社名とふりがなは、双方のEntryを作成するところにある 72 73 74#取引区分と会社形態 プルダウンの中身を定義 75class_list =(campany_class_rows) 76class_combobox = ttk.Combobox(values=class_list) 77class_combobox.bind('<<ComboboxSelected>>',class_show_selected,) 78 79coltd_list =(coltd_rows) 80coltd_combobox = ttk.Combobox(values=coltd_list) 81 82 83 84# ラジオボックスの作成  会社形態の有無と会社名の前か後か決めるラジオボタン 85radio_var = tk.IntVar() 86radio_var.set(0) 87radio_0 = tk.Radiobutton( text="個人事業主", value=0, 88 variable=radio_var, command=radio_show_selected,) 89radio_1 = tk.Radiobutton( text="会社名の前", value=1, 90 variable=radio_var, command=radio_show_selected,) 91radio_2 = tk.Radiobutton( text="会社名の後", value=2, 92 variable=radio_var, command=radio_show_selected,)

投稿2022/06/03 01:47

tami.py

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問