2015-10-18 2 views
0

Я хочу создать окно внутри окна. Внешнее окно просто одно, а внутреннее окно - это граф. Причина этого в том, что я хотел бы создать систему мониторинга с несколькими графиками, в которых могли бы помочь вложенные окна.Как создать вложенные окна в python Tkinter?

Вот код:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
import Tkinter 

x = [] 
y = [] 

top = Tkinter.Tk() 

top.title("Hello tkInter"); 
top.geometry("1000x1000") 

fig=plt.figure() 

rect = fig.patch 
rect.set_facecolor('#31312e') 

readFile = open('sampleCSV.csv','r') 
sepFile = readFile.read().split('\n') 
readFile.close() 

for plotPair in sepFile: 
    xAndY = plotPair.split(',') 
    if xAndY[0] != '': 
     x.append(int(xAndY[0])) 
     y.append(int(xAndY[1])) 

ax1 = fig.add_subplot(2,2,1, axisbg='grey') 
ax1.plot(x, y, 'c', linewidth=3.3) 
ax1.tick_params(axis='x', colors='c') 
ax1.tick_params(axis='y', colors='c') 
ax1.spines['bottom'].set_color('w') 
ax1.spines['top'].set_color('w') 
ax1.spines['left'].set_color('w') 
ax1.spines['right'].set_color('w') 
ax1.yaxis.label.set_color('c') 
ax1.xaxis.label.set_color('c') 
ax1.set_title('Matplotlib graph', color = 'c') 
ax1.set_xlabel('x axis') 
ax1.set_ylabel('y axis') 

ax2 = fig.add_subplot(2,2,2, axisbg='grey') 
ax2.plot(x, y, 'c', linewidth=3.3) 
ax2.tick_params(axis='x', colors='c') 
ax2.tick_params(axis='y', colors='c') 
ax2.spines['bottom'].set_color('w') 
ax2.spines['top'].set_color('w') 
ax2.spines['left'].set_color('w') 
ax2.spines['right'].set_color('w') 
ax2.yaxis.label.set_color('c') 
ax2.xaxis.label.set_color('c') 
ax2.set_title('Matplotlib graph', color = 'c') 
ax2.set_xlabel('x axis') 
ax2.set_ylabel('y axis') 

ax3 = fig.add_subplot(2,1,2, axisbg='grey') 
ax3.plot(x, y, 'c', linewidth=3.3) 
ax3.tick_params(axis='x', colors='c') 
ax3.tick_params(axis='y', colors='c') 
ax3.spines['bottom'].set_color('w') 
ax3.spines['top'].set_color('w') 
ax3.spines['left'].set_color('w') 
ax3.spines['right'].set_color('w') 
ax3.yaxis.label.set_color('c') 
ax3.xaxis.label.set_color('c') 
ax3.set_title('Matplotlib graph', color = 'c') 
ax3.set_xlabel('x axis') 
ax3.set_ylabel('y axis') 

plt.show() 

fig.pack() 

top.mainloop() 

Я не в состоянии выяснить решение для этого. Пожалуйста помоги!

+1

Возможный дубликат [Окно внутри окна] (http://stackoverflow.com/questions/31764908/window-inside-window/32397909#32397909) –

+0

Спасибо, Стивен. Это определенно поможет! – Desai

+0

Я обновил код по вышеупомянутому вопросу, если вы хотите проверить его. –

ответ

1

Прочтите о good SO questions. Слишком много кода, нет трассировки ошибок, не вопрос. Однако я считаю, что ваша проблема в том, что matplotlib и tkinter не совместимы, по крайней мере, не без большой работы. Если plt.show() действительно выполняется, я ожидаю, что с fig является matlab.pyplot.figure() или Figure экземпляром, и этот класс не имеет метода tkinter pack, fig.pack() вызывает атрибут AttributeError.

Смежные вопросы