我可以同时打开两个Tkinter Windows吗?

问题描述 投票:0回答:1

是否可以同时打开2个窗口?

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()

我正在第一张地图上绘制线,然后将其优化到第二张地图上的不同位置。该部分未在此处显示,但我想同时打开两个窗口,并使随机起点指向第二个窗口中的最近位置。如果一次运行一个,一切都会正常,但是我必须注释掉另一半。

python tkinter python-3.4
1个回答
4
投票

一旦创建了第一个窗口,另一个窗口必须是顶层窗口

查看此链接至tkinters Toplevel页面。

编辑:

我正在玩弄您的代码,以查看是否可以使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()
© www.soinside.com 2019 - 2024. All rights reserved.