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

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

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

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

Tkinter

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

解決済

tkinter mySQLで取得したIDと名前の中で名前だけをラベルに表示させたい

tami.py
tami.py

総合スコア32

Python 3.x

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

Tkinter

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

2回答

0評価

0クリップ

268閲覧

投稿2022/06/06 03:58

tkinterでフォーム画面を作成しています。

mySQLでIDと名前を取得し、コンボボックスで選択できるようにしました。コンボボックスで選択したら、その名前を下段のラベルに表示させて、目視できるようにしてあります。
mySQLに登録するのはIDのみ。コンボボックス・ラベルには名前のみ表示させたいと思っています。
ただ現状は、コンボボックス(ラベルも)にIDと名前の両方が表示されてしまいます。
IDが表示されると見た目が悪いので、何とか名前のみの表示にできないかと苦戦しております。

SQL側の取引区分テーブルには、オートナンバー・取引区分名の2つのカラムがあります。

python3.9.10

# 取引区分・登録フォーム import tkinter from tkinter import ttk from tkinter import Tk, font from tkinter import messagebox import mysql.connector as mysql import datetime 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_id, campany_class_name from tb_campany_class" cur.execute(sql) campany_class_rows= cur.fetchall() # 注1 # 取引区分の選択した際の下段ラベル表示   def class_show_selected(event): class_label_2.config(text=class_combobox.get()) # 登録ボタンを押した際のテキストを読み取るgetメソッド def touroku_sql(): class_id = class_combobox.get() # 注2 # SQLを発行してDBへ登録 try: cur = con.cursor() cur.execute(""" INSERT INTO tb_campany(campany_class_id) VALUES('{}'); """.format(class_id )) cur.execute("COMMIT;") messagebox.showinfo("メッセージ", "登録しました") # ドメインエラーなどにより登録できなかった場合のエラー処理 except: print("エラーにより登録できませんでした") root.destroy() # 画面を閉じる関数を与える def return_view(): root.destroy() #各種ラベルの設定 font1 = font.Font(size=10) class_label_1 = tkinter.Label(text='取引区分の選択:', font=font1) # 各種エントリー等を入力した際の入力内容確認用ラベル class_label_2= tkinter.Label() # 取引区分を選択した際用ラベル #取引区分と会社形態 プルダウンの中身を定義 class_list =(campany_class_rows) class_combobox = ttk.Combobox(values=class_list) class_combobox.bind('<<ComboboxSelected>>',class_show_selected,) #各種ラベル等の配置 class_label_1.place(x=40, y=30) class_combobox.place(x=150, y=30) class_label_2.place(x=20, y=250) # 登録・閉じるボタン作成 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()

やってみたこと
名前のみを取得すれば、コンボボックスに表示されるのも名前だけにできますが、そうするとmySQLに登録されるのも名前だけになってしまいます。
コンボボックス用にmySQL用とは別に名前を取得して名前だけを表示させるとmySQLに登録する際、何も選択していないことになってしまい登録できませんでした。
ネットで検索しても参考にできそうなものを見つけることができませんでした

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Python 3.x

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

Tkinter

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