2017-03-18 13 views
0

python Tkinterを使用して、マウスのキーをクリックするとランダムな場所にテキストを配置します。ここに私のコードは次のとおりです。ウィンドウがポップアップ表示された後画面上のランダムな場所にTkinter.Textを使用してテキストを表示する方法

from Tkinter import * 
import sys 
from random import randint 

root = Tk() 
screen_width = root.winfo_screenwidth() 
screen_height = root.winfo_screenheight() 
x = 10 
y = 10 

def key(event): 
    if event.char == 'c': 
     xloc = randint(0, 100) 
     yloc = randint(0, 100) 
     T.mark_set("insert", "%d.%d" % (0, 0)) 
     T.insert('%d.%d' % (xloc, yloc), 'something') 

    if event.char == 'q': 
     sys.exit() 

frame = Frame(root, width=screen_width, height=screen_height) 
frame.bind("<Key>", key) 
frame.focus_set() 
frame.pack() 

T = Text(frame, height=screen_height, width=screen_width, bg="white", fg="blue") 
T.mark_set("insert", "%d.%d" % (0, 0)) 
T.pack() 

root.mainloop() 

、「C」を押すとテキストが以前のテキストの後ではなく、期待通りにランダムな位置に挿入されます。

+0

ありがとうございました。それを行い、 –

+0

を参照してください。約3000スペースを追加し、画面解像度内の場所にテキストを配置しようとしました。何とか失敗するように見え、3000スペースの後にテキストが置かれます。すべてのスペースを挿入した後、およびランダムなテキストを配置する前に、mark_insert()を使用してカーソルを0に設定します。コード –

答えて

2

キャンバスを使用してみてください。これは現在の実装と非常によく似ています。

from Tkinter import * 
from random import randint 

root = Tk() 

def key(event): 
    print "pressed", repr(event.char) 

    if event.char == 'c': 
     xloc = randint(0, 100) 
     yloc = randint(0, 100) 
     canvas.create_text(xloc, yloc, text='something') 

canvas = Canvas(width=100, height=100, bg='white') 
canvas.focus_set() 
canvas.bind("<Key>", key) 
canvas.pack(expand=YES, fill=BOTH) 
root.mainloop() 
+0

ありがとうございました。これは動作します! –

+0

問題ありません!スタックオーバーフローでは、感謝の言葉は、あなたが役に立つと思っている質問や回答をupvoteすることです。あなたの質問に答えの一つがあなたの問題に適しているなら、それを受け入れられた答えとしてマークすることができます。ガイドラインについては、ヘルプセンターをご覧ください。 –

+0

しかし、私はupvoteに必要なポイント未満を持っています。私はあなたの答えを受け入れられた答えとしてマークしました –

0

私はこの

from tkinter import * 
    import random 

    Text(text="put your text here".grid(row=random.randrange(0,9),column=random.randrange(0,9),columnspan=2) 

のようなものをお勧めします。このコードは、単純に10×10のウィンドウにランダムにテキストウィジェットを配置します。マウスのクリックにバインドするのは簡単です。

関連する問題