2017-04-21 5 views
0

同時に2つのウィンドウを開くことはできますか?Python:2つのTkinter Windowsを同時に開くことはできますか?

import tkinter as Tk 
import random 
import math 
root = Tk.Tk() 
canvas = Tk.Canvas(root) 
background_image=Tk.PhotoImage(file="map.png") 
canvas.pack(fill=Tk.BOTH, expand=1) # Stretch canvas to root window size. 
image = canvas.create_image(0, 0, anchor=Tk.NW, image=background_image) 
root.wm_geometry("794x370") 
root.title('Map') 
root.mainloop() 

optimized_root = Tk.Tk() 
optimized_canvas = Tk.Canvas(optimized_root) 
optimized_root.pack(fill=Tk.BOTH, expand=1) 
optimized_image = second.create_image(0, 0, anchor=Tk.NW, image=background_image) 
optimized_root.wm_geometry("794x370") 
optimized_root.title('Optimized Map') 
optimized_root.mainloop() 

私は最初のマップに線を描画し、2番目のマップ上の異なる位置に線を描画しています。その部分はここには描かれていませんが、私は両方のウィンドウを同時に開き、ランダムな開始点を2番目のウィンドウの最も近い位置に向かせたいと思っています。一度に1つずつ実行するとすべてが機能しますが、残りの半分をコメントアウトする必要があります。

答えて

3

あなたは、他のウィンドウがトップレベル

がtkinters Toplevelページにこのリンクをチェックアウトする必要があり、あなたの最初のウィンドウを作ったら。

EDIT:

私が開いて、画像を表示する2つのウィンドウを取得するために管理することができるかどうかを確認するためにあなたのコードで遊んでました。ここに私が思いついたのがあります。それは完璧ではないかもしれませんが、それは正しい方向にあなたを指し示すべきです。

私は定義された関数としてトップレベルを入れ、それをメインループの一部として呼び出しました。

注:mainloop()は一度しか呼び出すことができません。

from tkinter import * 
import random 
import math 

root = Tk() 
canvas = Canvas(root) 
background_image=PhotoImage(file="map.png") 
canvas.pack(fill=BOTH, expand=1) # Stretch canvas to root window size. 
image = canvas.create_image(0, 0, anchor=NW, image=background_image) 
root.wm_geometry("794x370") 
root.title('Map') 

def toplevel(): 
    top = Toplevel() 
    top.title('Optimized Map') 
    top.wm_geometry("794x370") 
    optimized_canvas = Canvas(top) 
    optimized_canvas.pack(fill=BOTH, expand=1) 
    optimized_image = optimized_canvas.create_image(0, 0, anchor=NW, image=background_image) 

toplevel() 

root.mainloop() 
+0

「mainloop」を1回だけ呼び出す必要があることに言及したいことがあります。 –

+0

はい、正しいです。私は、私の答えが更新される前に、私の最後でそれを動作させるようにしようとしているコードで遊んでいました。 –

関連する問題