会社の登録をするフォームを作成しています。
作成しているのは、
取引区分・会社形態(株式や有限・合同会社など)と
その会社形態を社名の前につけるか後ろにつけるか
もしくは、つけない(個人事業主だと会社形態がないため)を
実装したい試みています。
今問題になっているのは、
①ラジオボタンで”個人事業主”を選択したら、会社形態は、表示しない
②ラジオボタンで”会社の前”を選択したら、プルダウンで選択した項目を会社名ラベルの前に表示。”会社の後ろ”を選択したら、会社名ラベルの後ろに表示をさせたい
というところです。
問題なのは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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。