Спасибо за ответ. Я зачислил другого, хотя он был первым: Но вы оба пришли к одному и тому же выводу. Спасибо =)

исал кучу кода, который производит графический интерфейс. Теперь, когда я запускаю код, он создает главное окно графического интерфейса и одно дополнительное маленькое окно, в котором ничего нет. Когда я закрываю меньшее окно, большое главное окно исчезает. Сейчас я читаю другие посты с похожими проблемами, но я не смог определить, где находится ошибка в моем коде.

Пожалуйста помоги :)

Следующий вопрос: Как бы я добавил фоновое изображение, а не серый скучный цвет?

Вот как это выглядит.

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

Ответы на вопрос(2)

Tk класс. В вашем коде вы не создаете один, ноmainloop кажется, создать один автоматически он все еще создан (см.Bryanкомментарий ниже), даже если вы не можете (легко) обратиться к нему позже.

Если вы будете использовать дополнительные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 Объект, который может скрывать тот факт, что ваше приложение будет нуждаться в нем, когда используется автономно.

 Mars13 дек. 2017 г., 20:46
Спасибо за ответ. Я зачислил другого, хотя он был первым: Но вы оба пришли к одному и тому же выводу. Спасибо =)
 Bryan Oakley13 дек. 2017 г., 19:59
Это неmainloop это создает корневое окно. При первом создании виджета будет создано корневое окно, если оно не существует.
Решение Вопроса

УдалитьToplevel изwindow = tk.Toplevel(), У меня нет доступного дистрибутива Python2 - я на Python3, но когда я удалилTopLevel Судя по моему коду, он вывел только одно окно. Итак, путь python3 - это ....

import tkinter as tk

#This creates the main window of an application
window = tk.Tk()



#Start the GUI
window.mainloop()

Я думаю, что единственное отличие состоит в том, что tkinter в python2 на самом деле является Tkinter (как вы уже сделали).

 Jesse McCall13 дек. 2017 г., 19:51
Кроме того, я отредактировал свой ответ, чтобы мой импорт более точно отражал ваш (за исключением использования заглавных букв). Надеюсь, это поможет! :)
 Mars13 дек. 2017 г., 20:44
Изменение window = tk.Toplevel () на tk.Tk () сделало свою работу. Спасибо =)
 Jesse McCall13 дек. 2017 г., 19:41
Да, это из-за того, как ты это импортировал. Если вы выполните команду «Импортировать Tkinter as tk», а затем выполните команду «window = tk.Tk ()», будет ли это работать?
 Mars13 дек. 2017 г., 19:40
если я удаляю это, я получаю ошибку, говоря, что модуль не вызывается. Да, я вынужден использовать python2 для этой задачи, хотя я в основном использую 3. Это огромная боль в заднице с использованием tkinter на py2 imo.

Ваш ответ на вопрос