近年、Pythonは最も広く使用されているプログラミング言語の1つになりました。ただし、Pythonは、これまで、特にWeb開発に関しては大きな役割を果たしていません。 Pyscriptはそれを変更するためにここにあります。これは、HTMLとPythonコードのみを使用して、WebブラウザーでPythonコードを直接実行できる新しいフレームワークです。経験レベルに関係なく、Pyscriptを使用してJavaScriptを知らずにインタラクティブなWebアプリを開発するのは非常に簡単です。このチュートリアルでは、Pyscript、それが何であるか、それがどのように機(jī)能するか、それを使用して最初のブラウザーベースのPythonアプリを作成する方法について學(xué)びます。目次- pyscriptとは何ですか
- WebAppにPyscriptを使用する方法は?
- Pyscriptを?qū)g踐しています
- ステップ1:main.pyを更新します
- ステップ2:CSSファイルを作成します
- ステップ3:index.htmlを更新します
- ステップ4:pyscript.tomlを更新します
- 結(jié)論
pyscriptとは何ですかPyscriptは、PythonとWebの間のギャップを埋めるオープンソースフレームワークです。 WebブラウザでPythonコードを直接実行できます。バックエンドサーバーを必要とせずに、クライアント側(cè)で完全に実行されるインタラクティブなPythonアプリケーションを作成できます。 Pyscriptは、JavaScriptの代わりにPythonを使用してWebアプリを書くようなものです。シンプルなインタラクティブなWebツール、ダッシュボードなどをPythonで構(gòu)築できます。 Pyscriptの主要な機(jī)能-
ブラウザのPython:內(nèi)部にPythonコードを書くことができますHTMLファイルのタグ環(huán)境のセットアップなし:追加のライブラリやツールをインストールする必要はありません。ブラウザで実行されます。 HTMLとのインタラクティブ: PythonをHTML、CSS、およびJavaScriptと簡単に統(tǒng)合できます。 WebAssemblyを搭載しています:ピョディドを使用します(WebAssemblyにコンパイルされたPython)ブラウザでPythonを?qū)g行します。 WebAppにPyscriptを使用する方法は?
ステップ1:公式ウェブサイトにアクセスしてください公式ウェブサイトをご覧ください。これは、デモ、ドキュメントを探索し、自分で試すことができる場所です。 

ステップ2:基本的なHTMLファイルを設(shè)定します pyscriptを?qū)g行するには、必要なフレームワークを備えた簡単なHTMLファイルが必要です。例コード:
私の最初のpyscriptアプリ
pyscriptからこんにちは!
name = "pyscript"
印刷(f "hello、{name}!ブラウザでpythonを?qū)g行しています。")
ステップ3 :htmlファイルを開きますブラウザ
デフォルトでは、3つのファイルがあります
<strong> main.py:<https:>あなたのpythonコード。<br> <br> <strong> index.html:<https:> pyscript。<br> <br> <strong> pyscript.toml:<https:> axtrage file file filed quing axtionpythonパッケージ使用
<p>適切なコードを使用してコードファイルを更新して実験を開始:<https:>
<p> <img src="https%EF%BC%9Ahttps%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712https%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e5e2be4edde55712mg%E3%80%82%20php.cnhttps%EF%BC%9A//ipnx.cn/link/29a9f8460e5e2be4ede557fd83712uploadhttps%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e5e2be4edde5712artti%20clehttps%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712000https%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde57fd83712000https/%20/ipnx.cn/link/29a9f8c8460e5e2bbe4edde557fd83712000http://ipnx.cn/link/29a9f8c8460e5e5e2be4edde555555555.jpg55.jpg5555.jpg.Jpg%20alt%20=%20" pyscript https:> <https:>
<p> Pyscriptの例でPyscript Playgroundを試して、ブラウザでコードスニペットを直接テストすることができます。
</p>
<p> <img src="https%EF%BC%9Ahttps%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712https%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e5e2be4edde55712mg%E3%80%82%20php.cnhttps%EF%BC%9A//ipnx.cn/link/29a9f8460e5e2be4ede557fd83712uploadhttps%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e5e2be4edde5712artti%20clehttps%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712000https%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde57fd83712000https/%20/ipnx.cn/link/29a9f8c8460e5e5e2be4edde557fd83712000http://ipnx.cn/link/29a9f8c8460e5e5e2be4edde557fd837171217491917822091.jpg%20" alt="pyscript:ブラウザでPythonを簡単に実行します-AnalyticsVidhya" https:> <https:>
<h2> Pyscript <https:>
<p> Pyscriptインターフェイスの仕組みに精通しているので、それを?qū)g際に実行しましょう。
</p>
<p> 2プレイヤーのTIC-TAC-TOEゲームを構(gòu)築します
</p>
<h3>ステップ1:<em> main.pyを更新します<https:> <https:> <em> main.py <https:>ゲームロジック、ユーザーインタラクション、UIの更新を含むTictactoeクラスを備えたファイルを追加します。 Pywebを使用してPythonをHTMLに接続し、ブラウザ內(nèi)でゲームを完全にインタラクティブにします。
<p> <strong>コード:<https:> <https:> pywebからインポートpydomから
クラスTictactoe:
def __init __(self):
self.board = pydom ["テーブル#ボード"]
self.status = pydom ["h2#status"]
self.consolle = pydom ["script#console"] [0]
self.init_cells()
self.init_winning_combos()
self.new_game(...)
def set_status(self、text):
self.status.html = text
def init_cells(self):
self.cells = []
(0、1、2)のIの場合:
row = []
(0、1、2)のJの場合:
cell = pydom [f "div#cell {i} {j}"] [0]
セルをアサートします
row.append(セル)
self.cells.append(row)
def init_winning_combos(self):
self.winning_combos = []
#勝利列
(0、1、2)のIの場合:
combo = []
(0、1、2)のJの場合:
combo.append((i、j))
self.winning_combos.append(combo)
#勝利
(0、1、2)のJの場合:
combo = []
(0、1、2)のIの場合:
combo.append((i、j))
self.winning_combos.append(combo)
#勝つ対角線
self.winning_combos.append([(0、0)、(1、1)、(2、2)])
self.winning_combos.append([(0、2)、(1、1)、(2、0)]))
def new_game(self、event):
self.clear_terminal()
print( '========================================
印刷( '新しいゲームの開始')
print()
(0、1、2)のIの場合:
(0、1、2)のJの場合:
self.set_cell(i、j、 "")
self.current_player = "x"
実験elf.set_status(f '{self.current_player} playing ...')
def next_turn(self):
winner = self.check_winner()
winner == "tie"の場合:
self.set_status( "それはネクタイです!")
self.current_player = ""#ie、ゲームは終了しました
戻る
エリフの勝者はいません:
self.set_status(f '{winner} wins')
self.current_player = ""#ie、ゲームは終了しました
戻る
self.current_player == "x"の場合:
self.current_player = "o"
それ以外:
self.current_player = "x"
self.set_status(f '{self.current_player} playing ...')
def check_winner(self):
"" "
ゲームが勝者としてかどうかを確認(rèn)してください。
「x」、「o」、「タイ」を返します。ゲームがまだプレイしていることを意味するものはありません。
"" "
#勝者がいるかどうかを確認(rèn)してください
self.winning_combosのコンボの場合:
winner = self.get_winner(コンボ)
勝者の場合:
#勝ったセルを強(qiáng)調(diào)表示します
私の場合、コンボのJ:
self.cells [i] [j] .add_class( "win")
勝者を返します
#ネクタイかどうかを確認(rèn)してください
(0、1、2)のIの場合:
(0、1、2)のJの場合:
if self.get_cell(i、j)== "":
#少なくとも空のセルがあります、それはネクタイではありません
None Noneを返します#ゲームはまだ再生されます
「ネクタイ」を返す
def get_winner(self、combo):
"" "
指定されたポイントのすべてのセルが同じ値を持っている場合、それを返します。
それ以外の場合は戻ります ""。
各ポイントは、(i、j)座標(biāo)のタプルです。
例:
self.get_winner([(0、0)、(1、1)、(2、2)])
"" "
Assert Len(combo)== 3
values = [self.get_cell(i、j)for i、j in combo]
値[0] ==値[1] ==値[2]と値[0]!= "":
返品値[0]
戻る ""
def set_cell(self、i、j、value):
( "" "、" x "、" o ")の評価値
cell = self.cells [i] [j]
cell.html = value
cell.classesの「x」の場合:
cell.remove_class( "x")
Cell.Classesの「O」の場合:
cell.remove_class( "o")
Cell.Classesで「勝つ」場合:
cell.remove_class( "win")
value!= ""の場合:
cell.add_class(value)
def get_cell(self、i、j):
cell = self.cells [i] [j]
value = cell.html
( "" "、" x "、" o ")の評価値
返品値
def click(self、event):
i = int(event.target.getAttribute( 'data-x'))
j = int(event.target.getAttribute( 'data-y'))
print(f'cell {i}、{j} clicked: '、end =' ')
self.current_player == ""の場合:
print( 'ゲームが終了した、何もすることはありません')
戻る
#
value = self.get_cell(i、j)
value == ""の場合:
print( 'セルが空、設(shè)定')
self.set_cell(i、j、self.current_player)
self.next_turn()
それ以外:
印刷(f'cellはすでにいっぱい、設(shè)定できません ')
def clear_terminal(self):
self.console._js.terminal.clear()
def toggle_terminal(self、event):
hidden = self.console.parent._js.getattribute( "hidden")
隠されている場合:
self.console.parent._js.Removeattribute( "Hidden")
それ以外:
self.console.parent._js.setattribute( "hidden"、 "hidden")
ゲーム= tictactoe()<https:>
<h3>ステップ2:CSSファイルを作成<https:>
<p> <em> style.css <https:>新しく作成されたファイルを作成します<strong> assets <https:>フォルダーは、tic-tac-toeゲームのレイアウトとスタイルを定義します。これは、ボード、セル、およびステータスメッセージのスタイリングを扱います。
<p> <strong>コード:<https:> <https:> h1、h2 {
フォントファミリー:「インディーフラワー」、「コミックサンズ」、筆記體。
テキストアライグ:センター;
}
#ボード {
フォントファミリー:「インディーフラワー」、「コミックサンズ」、筆記體。
位置:相対;
フォントサイズ:120px;
マージン:1%Auto;
國境崩壊:崩壊;
}
#BoardTD {
境界線:4pxソリッドRGB(60、60、60);
幅:90px;
高さ:90px;
垂直アライイン:中央;
テキストアライグ:センター;
カーソル:ポインター;
}
#Board TD Div {
幅:90px;
高さ:90px;
ラインハイト:90px;
表示:ブロック;
オーバーフロー:隠し;
カーソル:ポインター;
}
.x {
色:Darksalmon;
位置:相対;
フォントサイズ:1.2em;
カーソル:デフォルト;
}
.o {
色:アクアマリン;
位置:相対;
font-size:1.0em;
カーソル:デフォルト;
}
。勝つ {
背景色:ベージュ;
} <https:>
<h3>ステップ3:更新<em> index.html <https:> <https:> index.html <https:> pyscriptセットアップ、ロードを參照するファイル<em> main.py <https:>、ゲームボード構(gòu)造を定義し、 <em> style.css <https:>(資産フォルダーから)スタイリング
<p> <strong>コード:<https:> <https:>
<meta name="Viewport" content="width = device-width、initial-scale = 1.0">
<link rel="styleSheet" href="https%EF%BC%9Ahttps%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712https%EF%BC%9A//www.ph%20p.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.nethttp://ipnx.cn/link/29a9f%208C8460E5E2BE4EDE557FD83712RELEASESHTTTS%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde5%2057FD837122024.1.1HTTPS%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712core.css%20">
<link rel="styleSheet" href=".https%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712assetshttps%EF%BC%9A//ipnx.cn/link/29a9f%208C8460E5E2BE4EDE557FD83712CSSHTTTS%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712examples.css%20" https:>
<https:>
<link rel="styleSheet" href=".https%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712assetshttps%EF%BC%9A//ipnx.cn/link/29a9f8%20C8460E5E2BE4EDE557FD83712CSSHTTTS%EF%BC%9A//ipnx.cn/link/29a9f8c8460e5e2bbe4edde557fd83712tictactoe.css%20" https:>
<style>
#loading {outsline:none;國境:なし;背景:透明}
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712style>
<script type = "module">
const loading = document.getElementById( 'Loading');
addeventListener( 'py:ready'、()=> loading.close());
loading.showmodal();
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
<title> tic tac toe <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712title>
<link rel = "icon" type = "imagehttps://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712png" href = ".https://ipnx.cn/link/29a9f8c8460e5e2be4ede557fd83712assetshttps://ipnx.cn/link/29a9f8c8460e5e5e2be4edde557ffd83712fadgen http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712head>
<body>
<ダイアログ>
<H1>ロード... <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712h1>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712dialog>
<nav>
<div>
<a href = "http://ipnx.cn/link/29a9f8c8460e5e2be4ede557fd83712">
<img src = "https:https://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712https://ipnx.cn/link/29a9f8c8460e5e5e2be4edde55712mg。 php.cnhttps://ipnx.cn/link/29a9f8460e5e2be4ede557fd83712uploadhttps://ipnx.cn/link/29a9f8c8460e5e5e2be4edde5712artti clehttps://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://ipnx.cn/link/29a9f8c8460e5e2be4edde57fd83712000https/ /ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712000http://ipnx.cn/link/29a9f8c8460e5e5e2be4edde557fd8371217491790072228.png " alt = "pyscript:ブラウザでPythonを簡単に実行します-Analytics Vidhya" http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712a>
<a href = ""> tic tac toe <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712a>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712div>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712nav>
<section>
<h1> tic-tac-toe <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712h1>
<script type = "py" src = ".https://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712main.py" config = ".https://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.toml"> <http://ipnx.cn/link/29a9f8c840e5e2be4ed8371fd8371fd833372
<表>
<tr>
<td> <div data-x = "0" data-y = "0" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<td> <div data-x = "0" data-y = "1" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<td> <div data-x = "0" data-y = "2" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<tr>
<td> <div data-x = "1" data-y = "0" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<td> <div data-x = "1" data-y = "1" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<td> <div data-x = "1" data-y = "2" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712tr>
<tr>
<td> <div data-x = "2" data-y = "0" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<td> <div data-x = "2" data-y = "1" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<td> <div data-x = "2" data-y = "2" py-click = "game.click"> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde55 7FD83712DIV> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712td>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712tr>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712table>
<h2> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712h2>
<button py-click = "game.new_game">新しいゲーム<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712button>
<button py-click = "game.toggle_terminal"> hidehttps://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712show端末<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712button>
<div hidden = "hidden">
<スクリプトタイプ= "py"ターミナル> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712div>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712Section>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712body>
<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712html> <http://ipnx.cn/link/29a9a9f8c8460e5e5e5e2be4ede557fd83712pre>
<H3>ステップ4:更新<em> pyscript.toml <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712em> <http://ipnx.cn/link/29a9f8c840e5e2be4ed8372d8333333333333333337
<p> pyscript.toml <http://ipnx.cn/link/29a9f8c8460e5e5e2be4edde557fd83712em>ファイルは、依存関係、ファイルパスなどを含むアプリに必要な構(gòu)成を伴う必要な構(gòu)成を備えたファイルです。 <em> pyscript.toml <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712em> tic-tac-toeのファイルの內(nèi)容は次のとおりです。アプリケーション:<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> <strong> config:<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712strong> <http://ipnx.cn/link/29a9f8c840e5e5e2be4ed83712ppped83712ped83712PD83712PD83712PD833712
<pre class="brush:php;toolbar:false"> name = "tic tac toe"
説明= "人々が交代することを可能にするPyscriptで書かれたTic-Tac-Toeゲーム。
<p><strong>Output:<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712strong><http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<iframe src = "https:https://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712https://ipnx.cn/link/29a9f8c8460e5e5e2be4edde557 fd83712cdn.analyticsvidhya.comhttps://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712wp-contenthttps://ipnx.cn/li NK/29A9F8C8460E5E2BE4EDE557FD83712UPLOADSHTTPS://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd837122025https:///www.ph p.cn/link/29a9f8c8460e5e2be4edde557fd8371206http://ipnx.cn/link/29a9f8c8460e5e5e2bbe4edde557fd83712 Recording-2.webm " loading = "lazy" title = "youtube video" approakfullscreen> <http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712iframe>
<p>ここで、Pyscriptの最初のプロジェクトを使用します
<h2>結(jié)論<http://ipnx.cn/link/29a9f8c8460e5e2be4edde557fd83712h2>
<p> Pythonは、データサイエンス、AI、自動(dòng)化、およびこれまでにないような教育で使用されています。しかし、今までウェブ上のPythonのネイティブホームはありませんでした。 Pyscriptが到著し、PythonのシンプルさをWebのアクセシビリティと融合させます。それはまだ成熟していますが、開発者、教育者、學(xué)習(xí)者の両方にすでに多くの機(jī)會(huì)を生み出しています。</style></https:></https:></https:></strong></p></https:></em></https:></em></https:></https:></https:></em>
</h3></https:></https:></https:></strong></p></https:></strong></https:></em></p></https:>
</h3></https:></https:></https:></strong></p></https:></em></https:></https:></em>
</h3></https:>
</h2></https:></p></https:></p></https:></p></https:></strong></https:></strong></https:></strong>
以上がPyscript:ブラウザでPythonを簡単に実行する - 分析Vidhyaの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。