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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1601閲覧

[Python初心者]プルダウン(commbobox)で選択したcsvデータを実行ボタンを押すとグラフ表示出来るようにしたい

tasukete11

総合スコア10

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/06/08 07:34

編集2022/06/08 13:05

プルダウン(combobox)で選択したデータを実行ボタンを押すと表示出来るようにしたいのですが、コードの書き方がわかりません。サイトで色々調べましたが、自分の言葉の表現の仕方が悪いのか、自分の求めているページが出てきませんでした。ヤフーさんにも質問してみましたが、やはり求めている答えには至らなかったので、こちらで質問させて頂きます。Python初めて1週間も経ってないので、言葉足らずな部分もありますが、ご理解頂けると幸いです。また、プロの方からすればかなりコードも雑になっていると思います。温かい目で見ていただければと思います。。。

(※anacondaのJupyter Notebookで作成しています)
Tkinterでプルダウンと実行ボタンを押すとcommandで示したグラフは表示出来るようにはできたのですが、commandの部分をプルダウンで選択したものに切り替えてグラフを表示出来るようにしたいのです。このままだとプルダウンはただの飾りで実行ボタンを押すとコードで指定した一か所のグラフしか表示されなくなってしまいます。このコードを使うと出来るようになるよとか、サイトのURLでも提示してくれるなど、何かヒントを頂ければと思います。
そもそもそんなコードないとかであれば、こればっかりは仕方ないです。。。
どうぞよろしくお願い致します。m(__)m

自分で色々調べて作成したコードは以下の通りです。
whr2017=pd.read_csv(r"")  
whr2016=pd.read_csv(r"")
の部分の()が空欄になってますが、自分の名前が入ってしまっているので空白にさせて頂いています。

csvファイルは以下のサイトの「世界幸福度報告」というものを使っています。
(https://domohelp.domo.com/hc/ja/articles/360043931814-%E6%A5%BD%E3%81%97%E3%81%BF%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6%E3%82%B5%E3%83%B3%E3%83%97%E3%83%ABDataSet)

import pandas as pd import numpy as np from matplotlib import pyplot as plt %matplotlib inline from sklearn.linear_model import LinearRegression as LR from sklearn.metrics import accuracy_score whr2017=pd.read_csv(r"")   whr2016=pd.read_csv(r"") import tkinter as tk from tkinter import messagebox import tkinter.ttk as ttk from tkinter import messagebox #タイトルと画面サイズ root = tk.Tk() root.title("Python") root.geometry("350x100") #select_combo1の値を取得 def select_combo1(event): print(combo1.get()) #select_combo2の値を取得 def select_combo2(event): print(combo2.get()) #ボタンクリックイベント_tarin&ヒストグラム def btn_clk(): messagebox.askyesno("メッセージ","結果を表示しますか?") root.destroy() plt.hist(whr2017["Happiness Rank"]) #ボタンクリックイベント_tarin&折れ線グラフ def btn_clk1(): messagebox.askyesno("メッセージ","結果を表示しますか?") root.destroy() plt.hist(whr2017["Family"]) def btn_(): messagebox.askyesno("メッセージ","結果を表示しますか?") root.destroy() plt.plot(whr2016["Happiness Rank"]) def btn_1(): messagebox.askyesno("メッセージ","結果を表示しますか?") root.destroy() plt.plot(whr2016["Family"]) #comboboxのリスト表示(①データ選択) list = ["WHR2017", "WHR2016"] variable1 = tk.StringVar() combo1 = ttk.Combobox (root,values = list,textvariable = variable1,state="readonly",width = 10) combo1.bind('<<ComboboxSelected>>', select_combo1) combo1.set("データ選択") combo1.place(x=30,y=40) #comboboxのリスト表示(②解析方法選択) list = ["ヒストグラム","折れ線グラフ"] variable = tk.StringVar() combo2 = ttk.Combobox(root,values = list,textvariable = variable,state="readonly",width = 12) combo2.bind('<<ComboboxSelected>>', select_combo2) combo2.set("解析方法選択") combo2.place(x=140,y=40) #実行ボタン button = tk.Button(root,text ="実行",width = 10,height=1,command = btn_1) button.place(x = 260,y = 38) #文字の表示 label = tk.Label(root, text='品質改善システム') label.place(x = 1 ,y = 1) label =tk.Label(root,text='①') label.place(x = 10, y=40) label =tk.Label(root,text='②') label.place(x = 120, y=40) label =tk.Label(root,text='③') label.place(x = 240, y=40) root.mainloop()

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

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

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

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

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

meg_

2022/06/08 12:43

testが未定義のように見えますがどこで定義されているのでしょうか?
tasukete11

2022/06/08 13:08

すみません!先ほど修正致しました。ちなみにmeg_さんは解決できますでしょうか? 他のサイトでも質問したところ、関数を作って呼び出せばいけると言われたのですが、どのようなコードをおかけば出来るかよくわかりません…ご教授いただけないでしょうか?
meg_

2022/06/08 15:40

質問のコードを実行したところ、whr2017=pd.read_csv(r"")のところでSyntaxError: invalid character in identifierとなりましたが、質問者さんの方ではなりませんか?
meg_

2022/06/08 15:52

> 他のサイトでも質問したところ、 上記についてはhttps://teratail.com/help#posted-otherserviceを確認いただきご対応ください。 > このままだとプルダウンはただの飾りで 上記については「プルダウンで選択したもの」の取得は出来るのでしょうか?
tasukete11

2022/06/08 17:09

返信遅くなって申し訳ありません。 if elif文使ったら選択表示出来るようになりました!! お騒がせしました
guest

回答2

0

質問(プルダウン(commbobox)で選択したcsvデータを実行ボタンを押すとグラフ表示出来るようにしたい)のみに対する回答になります。

※csvファイル名はテスト用です。
※ユーザーがコンボボックスでWHR2017またはWHR2016を選択しなかった場合の処理については考慮していません。
※グラフの種類(ヒストグラム、折れ線グラフ)については考慮していません。
※結果を表示しますか?で「いいえ」を選択した際の処理については考慮していません。

Python

1import pandas as pd 2import numpy as np 3from matplotlib import pyplot as plt 4 5from sklearn.linear_model import LinearRegression as LR 6from sklearn.metrics import accuracy_score 7 8 9whr2017=pd.read_csv(r"a.csv") 10whr2016=pd.read_csv(r"b.csv") 11 12 13import tkinter as tk 14from tkinter import messagebox 15import tkinter.ttk as ttk 16 17from tkinter import messagebox 18 19#タイトルと画面サイズ 20root = tk.Tk() 21root.title("Python") 22root.geometry("350x100") 23#select_combo1の値を取得 24def select_combo1(event): 25 print(combo1.get()) 26#select_combo2の値を取得 27def select_combo2(event): 28 print(combo2.get()) 29#ボタンクリックイベント_tarin&ヒストグラム 30def btn_clk(): 31 messagebox.askyesno("メッセージ","結果を表示しますか?") 32 root.destroy() 33 plt.hist(whr2017["Happiness Rank"]) 34#ボタンクリックイベント_tarin&折れ線グラフ 35def btn_clk1(): 36 messagebox.askyesno("メッセージ","結果を表示しますか?") 37 root.destroy() 38 plt.hist(whr2017["Family"]) 39def btn_(): 40 messagebox.askyesno("メッセージ","結果を表示しますか?") 41 root.destroy() 42 plt.plot(whr2016["Happiness Rank"]) 43def btn_1(): 44 messagebox.askyesno("メッセージ","結果を表示しますか?") 45 if combo1.get() == "WHR2017": 46 df = whr2017 47 elif combo1.get() == "WHR2016": 48 df = whr2016 49 root.destroy() 50 plt.plot(df) 51 52#comboboxのリスト表示(①データ選択) 53list = ["WHR2017", "WHR2016"] 54variable1 = tk.StringVar() 55combo1 = ttk.Combobox (root,values = list,textvariable = variable1,state="readonly",width = 10) 56combo1.bind('<<ComboboxSelected>>', select_combo1) 57combo1.set("データ選択") 58combo1.place(x=30,y=40) 59#comboboxのリスト表示(②解析方法選択) 60list = ["ヒストグラム","折れ線グラフ"] 61variable = tk.StringVar() 62combo2 = ttk.Combobox(root,values = list,textvariable = variable,state="readonly",width = 12) 63combo2.bind('<<ComboboxSelected>>', select_combo2) 64combo2.set("解析方法選択") 65combo2.place(x=140,y=40) 66#実行ボタン 67button = tk.Button(root,text ="実行",width = 10,height=1,command = btn_1) 68button.place(x = 260,y = 38) 69#文字の表示 70label = tk.Label(root, text='品質改善システム') 71label.place(x = 1 ,y = 1) 72label =tk.Label(root,text='①') 73label.place(x = 10, y=40) 74label =tk.Label(root,text='②') 75label.place(x = 120, y=40) 76label =tk.Label(root,text='③') 77label.place(x = 240, y=40) 78 79root.mainloop()

投稿2022/06/08 16:05

meg_

総合スコア10580

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

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

tasukete11

2022/06/08 17:00

ありがとうございます! 色々調べた結果、if elif 文でやったらなんとかできました!!! お手数をおかけして申し訳ないです。。。
meg_

2022/06/09 10:22

具体的なコードを掲載いただくとナレッジとして有用になるかと思います。
guest

0

自己解決

if elif文(条件分岐)を使ったら選択したグラフを表示出来るようになりました。

投稿2022/06/08 17:09

tasukete11

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問