Пустая страница с самым простым приложением pyjs (пижама)

Я пытаюсь использовать пижаму ( http://pyjs.org/). Мой входной файл с именем hi.py выглядит следующим образом:

from pyjamas import Window
from pyjamas.ui import RootPanel, Button
from pyjamas.ui import HTML

def greet(sender):
    Window.alert("Hello!")

b = Button("Click me", greet)
RootPanel().add(b)

Я запускаю следующую команду:

python ~/pyjs-pyjs-07f54ad/bin/pyjsbuild hi.py
Building : hi
PYJSPATH : [
    /Users/michaelnatkin/HelloPyjs
    /Users/michaelnatkin/pyjs-pyjs-07f54ad/library
    /Users/michaelnatkin/pyjs-pyjs-07f54ad/addons
]
Built to : /Users/michaelnatkin/HelloPyjs/output

Который, кажется, работает без ошибок, и вот мой результирующий каталог:

Michael-Natkins-MacBook-Pro-2:HelloPyjs michaelnatkin$ ls .
hi.js   hi.py   output
Michael-Natkins-MacBook-Pro-2:HelloPyjs michaelnatkin$ ls output
__init__.py         gchart.gif          hi.safari.cache.html
_pyjs.js            hi.html             history.html
bootstrap.js            hi.ie6.cache.html       tree_closed.gif
bootstrap_progress.js       hi.mozilla.cache.html       tree_open.gif
disclosurePanelClosed.png   hi.nocache.html         tree_white.gif
disclosurePanelClosed_rtl.png   hi.oldmoz.cache.html
disclosurePanelOpen.png     hi.opera.cache.html

Затем я направляю свой браузер на один из html-файлов: file:///Users/michaelnatkin/HelloPyjs/output/hi.html

и я получаю... пустую страницу. Единственная ошибка в моей консоли js:

Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match. 

что, я думаю, не слишком удивительно, так как HTML-файл говорит:

<html>
<!-- auto-generated html - You should consider editing and adapting this
 to suit your requirements. No doctype used here to force quirks mode; see
 wiki for details: http://pyjs.org/wiki/csshellandhowtodealwithit/
-->
<head>

<title>hi (Pyjamas Auto-Generated HTML file)</title>
<meta name="pygwt:module" content="hi">
</head>
<body style="background-color:white">
<script type="text/javascript" src="bootstrap.js"></script>
<iframe id="__pygwt_historyFrame" style="display:none;"></iframe>
<script type="text/javascript" src="bootstrap.js"></script>
<iframe id="__pygwt_historyFrame" style="display:none;"></iframe>
</body>
</html>

Итак.. Я полностью застрял. Может кто-нибудь сказать мне, как заставить этого плохого парня производить вывод? У меня есть гораздо более сложное приложение, которое я хочу создать, но если я не могу сказать "Привет", оно не пройдет хорошо. Спасибо!

1 ответ

Решение

Вы тоже пробовали это в Firefox? В Chrome ничего не отображается, но в Firefox я получаю сообщение об ошибке, возникающее при импорте RootPanel и Button. Вы должны заменить свою единственную строку на:

from pyjamas.ui.RootPanel import RootPanel
from pyjamas.ui.Button import Button

После этого ваша кнопка приветствует меня правильно.

Что касается проблемы Chrome, либо запустите ее с --allow-file-access-from-files, либо запустите локальный веб-сервер для отображения вашей страницы. Более подробную информацию можно найти здесь: https://github.com/pyjs/pyjs/wiki/googlechromeproblems

Другие вопросы по тегам