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

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

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

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

Python

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

Q&A

解決済

1回答

1176閲覧

tkinterで、テキストボックスに入力された値を取得する方法について

patama

総合スコア18

Tkinter

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

Python

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

0グッド

1クリップ

投稿2020/01/10 19:26

tkinterのEntryを用いてテキストボックスに入力された値を数値として取得したいのですがうまくいきません。そもそも文字列としても認識されていないようです。どのようにすればよいでしょうか。

※EntryはkeyInput関数で、取得はgetkey関数で行なっています。

python

1from mergeSort import mergeSortClass as ms 2from transition import TransitionRoutine 3import tkinter as tk 4 5 6class binarySearchClass(TransitionRoutine): 7 def __init__(self,master=None,**kwargs): 8 super().__init__() 9 self.keyInput() 10 self.binSearch(0,len(self.lines),self.keyValue) 11 12 13 14 def binSearch(self,left,right,key): 15 key = self.keyValue 16 mylist = self.lines 17 while left < right: 18 mid = (left + right) // 2 19 if mylist[mid] == key: 20 return mid 21 elif key < mylist[mid]: 22 return self.binSearch(left,mid,key) 23 else: 24 return self.binSearch(mid+1,right,key) 25 26 return -1 27 28 def keyInput(self): 29 30 keyframe = tk.Toplevel() 31 keyframe.title("キー入力") 32 keyframe.geometry('300x300') 33 keyframe.grid() 34 35 lbl = tk.Label(master=keyframe,text='キーを入力してください') 36 lbl.grid() 37 38 var = tk.StringVar() 39 keytxt = tk.Entry(master = keyframe,width=40,textvariable = var) 40 keytxt.grid() 41 42 self.keytxt = keytxt 43 self.var = var 44 45 okButton = tk.Button( 46 master = keyframe, 47 text = "OK", 48 width = 10, 49 bg = "#dc143c", 50 fg = "#ffffff", 51 command = self.getkey() 52 ) 53 okButton.grid(column=0,row=2,sticky=tk.NW) 54 55 56 57 def getkey(self): 58 self.keyValue = self.var.get() 59 print(self.keyValue) 60 61

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

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

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

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

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

guest

回答1

0

ベストアンサー

command = self.getkey()

これでは、Entry部品を作る次点で getkey() を呼び出してしまい、ボタンを押しても getkey関数を呼び出しませんよ。

command = self.getkey

にすれば、ボタンを押したときに getkey関数を呼び出すようになります。

それとは別に、「PEP8: Pythonコードのスタイルガイド」に準拠してないのがとても気になりました。

投稿2020/01/10 20:02

shiracamus

総合スコア5406

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

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

patama

2020/01/12 19:57

動きました! また、スタイルガイドの存在は知らなかったのでとてもありがたいです。 ありがとうございました。
shiracamus

2020/01/12 23:34

autopep8コマンドなど、自動的に整形するコマンドもあります。
patama

2020/01/26 08:56

そんなのもあるんですね…便利…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問