2017-08-02 13 views
-2

私はpythonで初めてのことですが、この質問の他の答えを理解できませんでした。コードを実行すると、int(weight[0])は変数 "weight"を整数に変換しないのですか?私は本当に新しいので、それはほとんどそれを理解していないので、それを愚かにするために最善を尽くしてください。ここに私のコードの関連セクションがPythonでtupleをintに変換する

weight = (lb.curselection()) 
    print ("clicked") 
    int(weight[0]) 
    print (weight) 
    print (type(weight)) 

とHERESに、このスクリプトのための私のコード

lb = Listbox(win, height=240) 
lb.pack() 
for i in range(60,300): 
    lb.insert(END,(i)) 
def select(event): 
    weight = (lb.curselection()) 
    print ("clicked") 
    int(weight[0]) 
    print (weight) 
    print (type(weight)) 
lb.bind("<Double-Button-1>", select) 

おかげ

私は、コードを実行

あり、それは TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple' を思い付くと、私はそれをしたいです"weight"変数を整数に変換する代わりに、私は数学演算に使うことができます。

完全トレースバック:Traceback (most recent call last): File "C:\Users\Casey\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__ return self.func(*args) File "C:/Users/Casey/AppData/Local/Programs/Python/Python36-32/s.py", line 11, in select int(weight) TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'

+1

あなたの質問には、あなたの出力とあなたが期待したものとどのように異なっているかの説明を含める必要があります。例外が発生した場合は、完全なトレースバックを含める必要があります。 – skrrgwasme

+0

私はそれを含むように変更しましたが、私はコーディングとstackoverflowを初めて使っています。 –

答えて

5

あなたが探していることは

weight = int(weight[0]) 

intある戻り整数なので、あなたが変数にそのリターンを割り当てる必要があること機能です。

あなたが探しているのは、変数weightをその最初のレコードの値に再割り当てすることです。そのコードはあなたに適しています。アイテムが既にint呼び出しは冗長かもしれない整数の場合

、あなたは私はあなたがここにlb.bind("<Double-Button-1>", select)を使用していた気づいただけ

weight = weight[0] 
+0

ここで起こっていることを@Casey Ryanに説明するのを助けるために、 'weight [0]'は 'weight'の要素です。これは' int() '関数に接続した要素です。したがって、 'weight = int(weight [0])'を実行すると、 'weight'の最初の要素だけを変数' weight'に上書きします。 –

+0

@DavyMええ、ありがとう、おそらく役に立ちます。 – Stael

0

でそれを取得することができるかもしれません。これは、最後に選択したリスト項目を返すcurselection()の問題を回避しますが、私はlb.bind('<<ListboxSelect>>', select)を使用するとこれでうまくいくと言います。 <<ListboxSelect>>にバインドすると、選択が変更された後にこのイベントがトリガーされ、このイベントを使用してcurselection()に電話すると、正しい出力が得られます。ここで

<<ListboxSelect>>イベントの使用例を提供したコードのビットは次のとおりです。

import tkinter as tk 


class Application(tk.Frame): 

    def __init__(self, parent): 
     tk.Frame.__init__(self, parent) 

     self.parent = parent 
     self.lb = tk.Listbox(self.parent, height=4) 
     self.lb.pack() 
     self.lb.bind('<<ListboxSelect>>', self.print_weight) 
     for item in ["one: Index = 0", "two: Index = 1", "three: Index = 2", "four: Index = 3"]: 
      self.lb.insert("end", item) 

    def print_weight(self, event = None): 
     # [0] gets us the 1st indexed value of the tuple so weight == a number. 
     weight = self.lb.curselection()[0] 
     print(weight) 


if __name__ == "__main__": 
    root = tk.Tk() 
    app = Application(root) 
    root.mainloop() 

現在選択されている項目はシングルクリックになりますが、コンソールにプリントアウト気づくでしょう。これにより、ダブルクリックが不要になります。

関連する問題