Ich möchte html-javascript auf jupyter ausführen und den resultierenden Wert zur Verwendung an die Python-Seite übergeben. (Beispiel: Ich möchte auf der Python-Seite anhand der auf Javascript usw. gezeichneten Koordinaten berechnen.) Als ich darüber nachdachte, schien es [Custom-Widget] zu geben (https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Custom.html) und ich habe es versucht.
Im Folgenden wird das HTML-Formular angezeigt, und die darin enthaltenen Eingaben werden an die Python-Seite übergeben und angezeigt. [Dieses Beispiel](https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Custom.html#Building-a-Custom-Widget --- Date-Picker) wurde jedoch geringfügig geändert Ich verwende Javascript, an das ich nicht gewöhnt bin, daher gibt es möglicherweise einen besseren Weg.
%%html
<!DOCTYPE html><html lang="ja">
<head><mata charset="utf-8"/><title>widget test</title></head><body>
<form name="js"><input type="text" name="txt_form" value=""><br></form><script>
require.undef('hello');
define('hello', ["@jupyter-widgets/base"], function(widgets) {
var HelloView = widgets.DOMWidgetView.extend({
render: function() {
this.model.on('change:value', this.value_changed, this);
},
value_changed: function() {
this.model.set('html_form', document.js.txt_form.value);//Holen Sie sich den Text in das Formular hier
this.touch();
},
});
return {
HelloView : HelloView
};
});
</script></body></html>
--Erstelle ipywidgets
import ipywidgets as widgets
from traitlets import Unicode
class HelloWidget(widgets.DOMWidget):
_view_name = Unicode('HelloView').tag(sync=True)
_view_module = Unicode('hello').tag(sync=True)
value = Unicode('Hello World!').tag(sync=True)
html_form = Unicode('').tag(sync=True)
my_widget = HelloWidget()
my_widget#Sie müssen hier ein Widget erstellen
my_widget.value += 'w'#schätzen[w]Durch Hinzufügen können Sie den Wert zwangsweise ändern, ein Synchronisationsereignis auslösen und den Wert im Formular abrufen
print(my_widget.html_form)#Werte im Formular anzeigen