2016-10-10 17 views
-1

それはタイトルで述べていますように、私はNの文字列を持っている(のは3を言わせて)、彼らは他のように次々に行く:複数の出力

"string1" 
"string2" 
"string3" 

「スリープ」の助けを借りて私たちは文字列をシンボルでシンボルをゆっくりとプリントアウトさせることができますが、それぞれを同じ時間にゆっくりとプリントしたいと思っています。そんなことをすることは可能ですか?

問題 - lvl.'Advanced ':3つのtkinterボタンの中に、そのようなテキストが印刷されていますか?または、可能であれば、そのようなテキストエフェクトを使ってラベルを作成し、同じ単語で3つのボタンに置​​き換えるのがよいでしょうか?

+0

「ゆっくりと印刷する」とはどういう意味ですか?あなたは、各文字の間に遅延を持って一度に1文字を表示して文字列を表示する方法を尋ねていますか? –

+0

サンプルコード(または既に持っているコード)と、可能であれば、あなたが望むもののイメージを追加できますか? –

答えて

1

あなたが正しく理解している場合は、一度に1文字ずつゆっくりと表示するラベルを作成する必要があります(最初に「s」、次に「st」、「str」などが表示されます)。

カスタムラベルクラスを作成し、afterを使用すると、テキストをゆっくりと表示できます。関数reveal_textが呼び出されるたびに、残りの文字のリストから1つの文字がポップされ、すでに表示されている文字に追加された後、0.5秒後に再び呼び出されるようにアレンジされます。例えば

class SlowLabel(tk.Label): 
    def __init__(self, *args, **kwargs): 
     tk.Label.__init__(self, *args, **kwargs) 

     self.text = self.cget("text") 
     self.configure(text="") 

     self.reveal_text() 

    def reveal_text(self): 
     if len(self.text) > 0: 
      text = self.cget("text") + self.text[0] 
      self.configure(text=text) 
      self.text = self.text[1:] 
      self.after(500, self.reveal_text) 

あなたは通常のラベル使用するまさにあなたのようなこのクラスを使用することができます:あなたは、ボタンではなく、ラベルを好む場合は、単にtk.Buttonではなくtk.Labelから継承

import tkinter as tk 
root = tk.Tk() 
for text in ("string1", "string2", "string3"): 
    label = SlowLabel(root, text=text, width=20, anchor="w") 
    label.pack(side="top", fill="x") 

を。

+0

これは私が必要とするものですが、最初のラベルにテキストを印刷し、次に2番目に、次に3番目にテキストを印刷するか、すべてのラベルに同時に記入するのはまだわかりません(初心者でも)? 2番目の質問は、 "tk.Label"と "tk.Button"の両方のインスタンスを変更するだけでいいですか、他のコードを変更する必要がありますか? –

+0

@AlexF:質問をする代わりに、コードを実行して、それが何であるかを確認してください。 –