2016-07-08 5 views
-1

テキストウィジェットでtext.getコマンドを使用してリストから最初のグループを取得しますが、数字には文字(特にダッシュ - )私は完全な文字列を取得しません。また、私のリストの中にダッシュが入っている間は、長さが違うので、始点+ x個の文字数という単純なものではありません。text.getを使用して文字列と文字を取得する -

123-678 

1234-456 

145-12341 

すなわち

私は何を取得したいと思いますが、私は「番号の最初のセットが含まれ、文字列全体、ダッシュ、そして数字の次のセットで、その後

を任意の空白を無視

getnumber=text.get("start and end") 

と、印刷にテキストの行全体を取得することができ、全体のテキストウィジェット、およびのみ「123」は、上記第1例の場合にされている:使用されまし。そこたくさんの例のように見えるが、私は、私は、したがって、私の質問の後だものに適用されるものを見つけることができません

私が使用しているコードは、私はテキストのエリアをクリックすると

self.outputbox.tag_configure("dwg", foreground="white", background="red") 
self.outputbox.tag_remove("dwg", "1.0", "end") 
self.outputbox.tag_add("dwg", "insert linestart", "insert lineend") 
getdwg=self.outputbox.get("insert linestart", "insert wordend") 
    print(getdwg) 

があります例えば、1234-34578が印刷される '1234'領域でクリックされた場合、ダッシュをクリックすると1234-プリントをクリックすると気付きましたが、情報の一部しか印刷されません私は34578の領域をクリックし、次に1234-34578プリントを(必要に応じて)クリックします。しかし、私はこの出力がクリックした文字列の領域に関係なく発生することを願っています

+0

です。あなたは何も尋ねていません。 –

+0

@BryanOakleyの記事では、最初の投稿で十分だと思いましたが、明確にしました。 – LMP2016

+0

あなたの編集は一切役に立たなかった。あなたは私たちにいくつかのコードを表示する必要があります。何を試しましたか?結果は何でしたか?それはあなたが期待しているものとどう違うのですか? –

答えて

0

このコード行は無効です:

getnumber=text.get("start and end") 

文字列"start and end"が有効なインデックスではありません。 1行を取得する場合は、行の先頭に有効なインデックスを指定してから、同じインデックスに"lineend"を付けて2番目のインデックスに追加することができます。例えば、1行目を取得するためにあなたができる:

getnumber = text.get("1.0", "1.0 lineend") 

を開始し、行の末尾に潜在的に余分なスペースがある場合は、第二段階として、それらを取り除くことができます。

getnumber = getnumber.strip() 
+0

「開始と終了」の構文が間違っていることがわかりました。私はそこに書き込んでいます。私は現在、text.get( "insert linestart"、 "insert wordend")を使用していますが、目的のエフェクト(ダッシュの前の数字のみ)を取得していません。私がクリックしている項目がテキストウィジェットの異なる行にあるため、インデックスは私にとってもうまくいきませんでした。 – LMP2016

+0

@ LMP2016:コードを私たちと共有しないかどうかはわかりません。 tkinterのテキストウィジェットインデックスは、文書化されているように機能し、非常に信頼性があります。 –

+0

@ LMP2016:コメントにコードを投稿しないでください。あなたの幸福を編集してそこに置く。 –

0

間違った方法を使用したり間違ったインデックスを使用した可能性があります。ここであなたが望むものを手に入れる方法を示して簡単なコードは次のとおりです。

import Tkinter as Tk  

root = Tk.Tk() 
text = Tk.Text(root) 
text.insert(Tk.INSERT, "123-678\n") 
text.insert(Tk.END, "1234-456\n") 
text.insert(Tk.END, "145-12341") 
text.pack()  
print text.get('1.0', '1.7') # First line 
print text.get('2.0', '2.8') # Second line 
print text.get('3.0', '3.9') # Third line 

root.mainloop() 

はデモ:

enter image description here

あなたは上記のプログラムを実行する場合は、あなたがこれを取得しますそして、線は正しくターミナルに印刷されます:

enter image description here

+0

私のテキストウィジェットとして複数の行にテキストを表示する(行の数は​​変わる可能性があります)私はインデックスを使用すると私のために動作するとは思わない。私のコードはそのままです
getdwg = self.dwgoutputbox.get( "insert linestart"、 "insert wordend") 699ここで、それは1851-345でなければなりません。
1849ここでそれは1849-267
であるべきです私のテキストウィジェットにはもっと多くの行がありますが、これは単なる例です
私は699-123でマウスをクリックしても、それが正しく印刷される数字の "123" – LMP2016

0

理想的には、プログラムが各行のテキストを選択して空き領域に達したときに停止するのは理想的でしたが、それは私の専門知識を超えていました。代わりに、私は悪いケースを試してlinestart+10cを実装しました。私のテキストウィジェットは印刷されたデータの間にタブを持っているのでうまく動作します。 書かれたコードは

 self.DwgOutputBox.tag_remove("dwg", "1.0", "end") 
     self.DwgOutputBox.tag_configure("dwg", background="red") 
     self.DwgOutputBox.tag_add("dwg", "insert linestart", "insert lineend") 
     getdwg=self.DwgOutputBox.get("insert linestart", "insert linestart+10c") 
     getdwg=getdwg.strip() 
関連する問題