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

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

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

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

Tkinter

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

解決済

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

tami.py
tami.py

総合スコア32

Python 3.x

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

Tkinter

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

1回答

0評価

0クリップ

113閲覧

投稿2022/06/02 04:51

編集2022/06/03 10:47

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

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

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

python3.9.10

# 取引区分・会社形態、及び有無・会社名・ふりがなの登録フォーム from ast import Break import tkinter import tkinter as tk from tkinter import ttk from tkinter import Tk, font from tkinter import messagebox import mysql.connector as mysql from sqlalchemy import values root = Tk() root.title("取引企業登録フォーム") root.geometry("400x350") # mysqlにconnect con = mysql.connect( database = 'seisan_system', user = 'root', password = 'mta969696', host = 'localhost', port = '3306', ) # MYSQLからカラムの取得 cur = con.cursor() sql= "select campany_class_name from tb_campany_class" cur.execute(sql) campany_class_rows= cur.fetchall() sql_2= "select coltd_name from tb_coltd" cur.execute(sql_2) coltd_rows= cur.fetchall() # 取引区分の選択・下段表示 def class_show_selected(event): class_label_2.config(text=class_combobox.get()) # ★★★問題と思われる個所★★★ # 会社形態の選択・下段表示、及び有無 def coltd_show_selected(event): if coltd_combobox is values("個人事業主"): #★★ coltd_label_2= tk.Label(text="") coltd_label_3= tk.Label(text="") print(coltd_combobox.get()) elif coltd_combobox != values("個人事業主"): if radio== 0: coltd_label_2= tk.Label(text="") coltd_label_3= tk.Label(text="") print("2dayo") elif radio== 1: coltd_label_2.config(text=class_combobox.get()) print("3da---") elif radio== 2: coltd_label_3.config(text=class_combobox.get()) print("dekita!!") else: print("エラーです。エラーです。") Break # 登録ボタンを押した際のテキストを読み取るgetメソッド def touroku_sql(): class_id = class_combobox.get() coltd_id= class_combobox.get() ltd_s = radio_var.get() name = name_entry.get() kana = kana_entry.get() if class_id =="": raise messagebox.showerror("メッセージ", "取引区分を選択してください") Break if coltd_id =="": raise messagebox.showerror("メッセージ", "会社形態を選択してください") Break if name =="": raise messagebox.showerror("メッセージ", "会社名を入力してください") Break if kana =="": raise messagebox.showerror("メッセージ", "ふりがなを入力してください") Break # SQLを発行してDBへ登録 try: cur = con.cursor() cur.execute(""" INSERT INTO tb_campany(campany_class_id, ltd_s, coltd_id,\ campany_name, campany_kana) VALUES('{}','{}','{}','{}','{}'); """.format(class_id, ltd_s, coltd_id, name, kana)) cur.execute("COMMIT;") messagebox.showinfo("メッセージ", "登録しました") print("1件登録しました") # ドメインエラーなどにより登録できなかった場合のエラー処理 except: print("エラーにより登録できませんでした") # 画面を閉じる関数を与える def return_view(): root.destroy() #各種ラベルの設定 font1 = font.Font(size=10) class_label_1 = tkinter.Label(text='取引区分の選択:', font=font1) coltd_label_1 = tkinter.Label(text='会社形態の選択:', font=font1) ltd_label_1 = tkinter.Label(text='個人事業主:', font=font1) ltd_label_2 = tkinter.Label(text='会社形態は、前:', font=font1) ltd_label_3 = tkinter.Label(text='会社形態は、後:', font=font1) name_label= tkinter.Label(text='会社名:', font=font1) kana_label= tkinter.Label(text='ふりがな:', font=font1) text_tyu= tkinter.Label(text=' *ふりがなは、「 ひらがな 」で入力してください:', font=font1) # 各種エントリー等を入力した際の入力内容確認用ラベル class_label_2= tkinter.Label() # 取引区分を選択した際用ラベル coltd_label_2= tkinter.Label() # 会社形態を選択した際の表示用ラベル(前用) coltd_label_3= tkinter.Label() # 会社形態を選択した際の表示用ラベル(後用) # 会社名とふりがなは、双方のEntryを作成するところにある #取引区分と会社形態 プルダウンの中身を定義 class_list =(campany_class_rows) class_combobox = ttk.Combobox(values=class_list) class_combobox.bind('<<ComboboxSelected>>',class_show_selected,) coltd_list =("個人事業主","株式会社","有限会社","合同会社") coltd_combobox = ttk.Combobox(values=coltd_list) coltd_combobox.bind('<<ComboboxSelected>>',coltd_show_selected,) # ラジオボックスの作成  会社形態の有無と会社名の前か後か決めるラジオボタン radio_ints = [0,1,2] radio_var=tkinter.IntVar() for i in range(len(radio_ints)): radio = tk.Radiobutton( value=i, variable=radio_var,text= radio_ints[i]) radio.place(x=170, y=90 + (i*20)) # 会社名・ふりがな用エントリーボックス・入力後の確認用ラベル作成 # 会社名 var_1=tkinter.StringVar(root) name_entry = tkinter.Entry(textvariable=var_1, width=30) name_entry.pack() name_labal_2 = tkinter.Label(textvariable=var_1) name_labal_2.pack() # ふりがな var_2=tkinter.StringVar(root) kana_entry = tkinter.Entry(textvariable=var_2, width=30) kana_entry.pack() kana_labal_2 = tkinter.Label(textvariable=var_2) kana_labal_2.pack() #各種ラベル等の配置 class_label_1.place(x=40, y=30) class_combobox.place(x=150, y=30) coltd_label_1.place(x=40, y=60) coltd_combobox.place(x=150, y=60 ) ltd_label_1.place(x=92, y=90) ltd_label_2.place(x=70, y=110) ltd_label_3.place(x=70, y=130) name_label.place(x=40, y=150) name_entry.place(x=100, y=150) kana_label.place(x=40, y=180) kana_entry.place(x=100, y=180) text_tyu.place(x=40, y=210) class_label_2.place(x=20, y=250) kana_labal_2.place(x=100, y=250) coltd_label_2.place(x=20, y=280) name_labal_2.place(x=100, y=280) coltd_label_3.place(x=250, y=280) # 登録・閉じるボタン作成 btn_toroku = tkinter.Button( text='登録', width=8, command=touroku_sql) btn_end = tkinter.Button( text='閉じる', width=8, command=return_view) btn_toroku.place(x=230, y=310) btn_end.place(x=310, y=310) root.mainloop()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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

Tkinter

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