[英]Extra Tkinter GUI popup
我已经写了一堆生成GUI的代码。 现在,每当我运行代码时,它都会产生主GUI窗口和一个没有任何内容的附加小窗口。 当我关闭较小的窗口时,大型主窗口消失了。 现在,我一直在阅读其他类似问题的文章,但是我无法确定错误在代码中的位置。
请帮忙 :)
跟进问题:如何添加背景图像而不是无聊的灰色?
#%% GUI Interface
import Tkinter as tk
from tkFont import Font
from PIL import ImageTk, Image
from Tkinter import END
#This creates the main window of an application
window = tk.Toplevel()
window.title("Sat Track")
window.geometry("1200x800")
window.configure(background='#f0f0f0')
#Imports the pictures.
pic1 = "Globeview.png"
pic2 = "MercatorView.png"
pic3 = "currentweathercroppedsmall.png"
pic4 = "GECurrentcroppedsmall.png"
#Creates a Tkinter-compatible photo image, which can be used everywhere Tkinter expects an image object.
img1 = ImageTk.PhotoImage(Image.open(pic1))
img2 = ImageTk.PhotoImage(Image.open(pic2))
img3 = ImageTk.PhotoImage(Image.open(pic3))
img4 = ImageTk.PhotoImage(Image.open(pic4))
header = tk.Label(window, text="Satellite Control Center", font=Font(size=40))
header.pack()
toprow = tk.Frame(window)
infobox = tk.Text(toprow, width=50, height=7, font=("Calibri",12))
infobox.pack(side = "left")
infobox.insert(END,"Current information for:"+spacer+name +'\n'+
"Time:" +space+times+ '\n'+
"Longitude:"+space +x_long+ '\n'+
"Latitude:" +space+x_lat+ '\n'+
"Altitude:" +space+alt+space+ "[km]"+'\n'+
"Velocity:" +space+vel+space+ "[km/s]" + '\n'+
"Spatial Resolution: "+space +spat+space+ "[Pixels pr. m]"
)
toprow.pack()
midrow = tk.Frame(window)
globeview = tk.Label(midrow, image = img1)
globeview.pack(side = "left") # the side argument sets this to pack in a row rather than a column
mercatorview = tk.Label(midrow, image = img2)
mercatorview.pack(side = "left")
midrow.pack() # pack the toprow frame into the window
bottomrow = tk.Frame(window)
currentweather= tk.Label(bottomrow, image = img3)
currentweather.pack(side = "left")
gearth = tk.Label(bottomrow, image = img4)
gearth.pack(side = "left")
bottomrow.pack()
#Start the GUI
window.mainloop()
每个tkinter应用程序只需要一个Tk
类实例。 在您的代码中,您不会创建一个,但
仍在创建的
mainloop
似乎会自动创建一个
(请参阅下面的Bryan的注释),即使您以后不能(轻松地)引用它也是如此。 mainloop
如果您将使用当前Toplevel
插件之外的其他Toplevel
插件,请执行以下操作:
root = tk.Tk()
root.withdraw() # You can go root.iconify(), root.deiconify() later if you
# want to make this window visible again at some point.
# MAIN CODE HERE
root.mainloop()
如果不是简单地替换:
window = tk.Toplevel()
与:
window = tk.Tk()
注意:还请注意,如果您使用的是IDLE,请记住它会创建自己的Tk
对象,这可能掩盖了您的应用程序在独立使用时需要一个Tk
对象的事实。
从window = tk.Toplevel()
删除Toplevel
。 我没有可用的python2 dist-我在python3上,但是当我从代码中删除TopLevel
时,它仅显示一个窗口。 所以,python3的方式是...
import tkinter as tk
#This creates the main window of an application
window = tk.Tk()
#Start the GUI
window.mainloop()
我认为唯一的区别是python2的tkinter实际上是Tkinter(正如您已经做过的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.