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

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

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

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

Tkinter

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

Python

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

Q&A

解決済

1回答

1630閲覧

【Python/tkinter】リスト内で重複した数字を別のリストに格納したい

kazma3357

総合スコア13

Python 3.x

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

Tkinter

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

Python

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

0グッド

0クリップ

投稿2019/02/04 14:28

前提・実現したいこと

今遊んでいるゲームにミニゲームでルーレットゲームがあるのですが、
その数字の記録用としてのプログラムを作っています。

【実現したいこと】
1)ルーレットを回すたびに出た数字の結果を入力

2)入力した数字を表示(LabelA)

3)複数回入力した数字のうち、重複した数字を表示(LabelB)

4)LabelAからLabelBに表示された数字が消える。

【出来ている部分】
1),2)まで

発生している問題・エラーメッセージ

3)~の部分については、Whileやdefを使用してみましたが、
理解しきっていないところもあるため上手く表示ができませんでした。

エラー文が出ないので、どう改善すればよいのかわかりません。

該当のソースコード

Python

1import tkinter 2 3#window 4Root = tkinter.Tk() 5Root.title("ルーレットナンバー") 6 7#TextBox 8EntBox = tkinter.Entry(width=12, bd=4) 9EntBox.place(x=10, y=15) 10#Button 11AskBtn = tkinter.Button(text="押す") 12AskBtn.place(x=50, y=60) 13 14#入れるリスト 15AddList = [] 16DupList = [] 17 18#入力結果をリストに入れてラベルに出す 19def click_List(): 20 Ent = EntBox.get() 21 AddList.append(Ent) 22 Ent = EntBox.delete(0, tkinter.END) 23 OutLabel["text"] = AddList 24 Func_Val() 25#重複した数字を別のラベルに出したい 26def Func_Val(): 27 return [i for i, x in enumerate(AddList) if x == EntBox.get()] 28 DupList = Func_Val(AddList, EntBox.get()) 29 DupLabel["text"] = DupList 30 31 32AskBtn["command"] = click_List 33 34#入力結果ラベル 35OutLabel = tkinter.Label(text="入力した数字が出る") 36OutLabel.place(x=10, y=120) 37 38#重複結果ラベル 39DupLabel = tkinter.Label(text="重複した数字が出る") 40DupLabel.place(x=10, y=150) 41 42#メインループ 43Root.mainloop()

試したこと

  • if/while文で書いてみる(条件文の書き方が分からず・・・)
  • classでまとめてみる(今回はシンプルに書けそうな気がして、途中でやめました)

補足情報(FW/ツールのバージョンなど)

Visual Studio Code/ver1.30.2
Python/ver3.7

どうかご助力のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のような感じでどうでしょうか

Python

1def click_List(): 2 Ent = EntBox.get() 3 EntBox.delete(0, tkinter.END) 4 5 # すでに入力リストにある値は削除し重複リストに加える 6 if Ent in AddList: 7 AddList.remove(Ent) 8 DupList.append(Ent) 9 # 重複リストにない値のみ入力リストに加える 10 elif Ent not in DupList: 11 AddList.append(Ent) 12 13 OutLabel["text"] = AddList 14 DupLabel["text"] = DupList

投稿2019/02/04 22:08

can110

総合スコア38266

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

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

kazma3357

2019/02/04 23:25

ありがとうございます!とても助かりました! "Ent = EntBox.delete(0, tkinter.END)"をif文の前に持ってきてしまうと、"None"と出てしまったので、 関数の一番最後に持っていくことで上手く動きました。 また、"in"がif文で使えるということも初めて知ったので勉強になりました。 can111さんありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問