प्रौद्योगिकी साझेदारी

ईल् इत्यनेन सह आरम्भार्थं केचन प्रकरणाः सन्ति

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ईल् इत्यनेन सह आरम्भार्थं केचन प्रकरणाः सन्ति

Eel इति पायथन् पुस्तकालयः अस्ति यत् पायथन् प्रोग्राम् सरल एपिआइ मार्गेण जालपुटैः सह अन्तरक्रियां कर्तुं शक्नोति । पायथन् पृष्ठभागस्य जावास्क्रिप्ट् अग्रभागस्य च मध्ये वास्तविकसमयसञ्चारं सक्षमं कर्तुं WebSocket प्रोटोकॉलस्य उपयोगं करोति । निम्नलिखितम् ईलस्य उपयोगस्य, संचारसिद्धान्तानां, उपयोगपरिदृश्यानां च विषये ब्लॉगलेखः अस्ति ।

ईलस्य मूलभूतसिद्धान्ताः

छवि-20240712105805701

ईलस्य मूलभूतसिद्धान्ताः निम्नलिखितपक्षेषु विभक्तुं शक्यन्ते ।

  1. WebSocket संचारः : WebSocket इति एकः संजालसञ्चारप्रोटोकॉलः अस्ति यः उपयोक्तुः ब्राउजर्-सर्वरयोः मध्ये निरन्तरं संयोजनं स्थापयितुं शक्नोति । Eel WebSockets इत्यस्य उपयोगं करोति यत् अग्रभागस्य पृष्ठभागस्य च मध्ये वास्तविकसमयस्य, द्विपक्षीयसञ्चारं सक्षमं करोति ।
  2. पायथन पृष्ठभाग : Eel’s backend इत्येतत् Python इत्यनेन लिखितम् अस्ति तथा च जटिलं तर्कं तथा च data processing कार्याणि कर्तुं शक्नोति । पायथन् कोड् ईल् द्वारा प्रदत्तस्य एपिआइ इत्यस्य माध्यमेन अग्रभागं प्रति आँकडान् प्रेषयितुं शक्नोति तथा च अग्रभागस्य घटनाः प्राप्तुं शक्नोति ।
  3. HTML/JS/CSS अग्रभागः :Eel इत्यनेन विकासकाः मानकजालप्रौद्योगिकीनां उपयोगेन उपयोक्तृ-अन्तरफलकानि निर्मातुं शक्नुवन्ति । HTML पृष्ठस्य संरचनां परिभाषयति, CSS इत्यस्य उपयोगः स्टाइलिंग् कृते भवति, JavaScript च उपयोक्तृ-अन्तर्क्रियाम् सम्पादयति तथा च पृष्ठस्य सामग्रीं गतिशीलरूपेण अद्यतनं करोति ।
  4. गतिशील सामग्री अद्यतन : Eel इत्यस्य front-end JavaScript इत्यस्य माध्यमेन back-end Python function इत्येतत् आह्वयितुं शक्नोति तथा च जालपुटे परिणामान् गतिशीलरूपेण प्रदर्शयितुं शक्नोति । तथैव अग्रभागः अपि उपयोक्तृ-अन्तर्क्रिया-घटनानि श्रुत्वा एतानि घटनानि प्रक्रियायै पृष्ठ-अन्ते प्रेषयितुं शक्नोति ।
  5. पार-मञ्चः: यतः ईल् जालप्रौद्योगिक्याः आधारेण अस्ति, अतः एतत् कस्मिन् अपि मञ्चे चालयितुं शक्नोति यत् आधुनिकजालब्राउजर् समर्थयति, यत्र विण्डोज, macOS, लिनक्स, मोबाईल् उपकरणानि च सन्ति ।
  6. सरलं सुलभं च: Eel इत्यस्य उद्देश्यं Python GUI विकासप्रक्रियायाः सरलीकरणम् अस्ति, येन विकासकाः शीघ्रं समृद्ध-अन्तरक्रियाशीलतायाः सह अनुप्रयोगानाम् निर्माणं कर्तुं शक्नुवन्ति, यत्र अन्तर्निहित-जाल-सञ्चार-विवरणेषु गहनतां न कृत्वा।

eel + vue एकं पायथन् स्क्रिप्ट् कार्यान्वयति

अहं प्रथमं निम्नलिखितप्रभावं प्राप्तुम् इच्छामि, विन्यासानुसारं python स्क्रिप्ट् निष्पादयितुं, pyhton स्क्रिप्ट् इत्यस्य log आउटपुट् कर्तुम् इच्छामि ।

छवि-20240712110800244

परिणामान् दर्शयतु

जीआईएफ २०२४-७-१२ १०-२०-५१

संहिता व्याख्या

पायथन कोड, २.main.py

  • eel परिचयं कुर्वन्तु, जालनिर्देशिकां विन्यस्यन्तु, पृष्ठप्रविष्टिं, मोड् विन्यस्यन्तु, ततः आरभ्यताम् ।
  • js इत्यस्य उजागरितानि python फंक्शन्स् परिभाषयन्तु ।
import eel
import os
import platform
import sys
import time

#指定web文件的文件夹
eel.init("web")

#暴露函数给 js的 eel 对象
@eel.expose
def py_start():
    print("开始执行")
    for i in range(100):
        #调用js方法
        eel.js_insertLog(f'这是python日志{i}')
        time.sleep(0.5)

if sys.platform in ['win32', 'win64'] and int(platform.release()) >= 10:
    eel.start('index.html', mode='edge')
else:
    raise EnvironmentError('Error: System is not Windows 10 or above')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

अग्र-अन्त-सङ्केतः web/index.html

  • जालरूपरेखारूपेण vue + elementui इत्यस्य उपयोगं कुर्वन्तु
  • पायथन् उजागरितविधयः आह्वयन्तु
  • पृष्ठे लॉग्स् आउटपुट् कर्तुं python इत्यनेन उजागरितं js मेथड् परिभाषयन्तु
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>小红书点赞</title>
  <link rel="stylesheet" href="./reset.css">
  <link rel="stylesheet" href="https://unpkg.com/[email protected]/lib/theme-chalk/index.css">
  <link rel="stylesheet" href="./index.css">
</head>

<body>
<div id="app">
  <el-container>
    <el-header>
      <h2>xxxx工具</h2>
    </el-header>
    <el-container>
      <el-aside width="210px">目录</el-aside>
      <el-main>
        <el-card class="form-box">
          <div class="title">脚本配置</div>
          <el-form ref="form"
                   label-position="left"
                   :model="form" label-width="80px">
            <el-form-item label="输入框">
              <el-input style="width: 280px" v-model="form.name"></el-input>
            </el-form-item>
            <el-form-item label="点赞选项">
              <el-checkbox-group v-model="checkList">
                <el-checkbox label="1" disabled="">评论点赞</el-checkbox>
                <el-checkbox label="2">头像点赞</el-checkbox>
                <el-checkbox label="3">背景页点赞</el-checkbox>
              </el-checkbox-group>
            </el-form-item>
            <el-form-item label="下拉框">
              <el-select v-model="form.region" placeholder="请选择活动区域">
                <el-option label="区域一" value="shanghai"></el-option>
                <el-option label="区域二" value="beijing"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="startPython()">开始执行python脚本</el-button>
            </el-form-item>
          </el-form>
        </el-card>
        <el-card class="log-box">
          <el-input
            type="textarea"
            :rows="16"
            placeholder="请输入内容"
            v-model="logTextarea">
          </el-input>
        </el-card>
      </el-main>
    </el-container>
  </el-container>
</div>
<script type="text/javascript" src="/eel.js"></script>
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<script src="https://unpkg.com/[email protected]/lib/index.js"></script>
<script>
    var vm = new Vue({
        el: '#app',
        data() {
            return {
                logTextarea: "",
                logArr: [],
                checkList: ['1'],
                form: {
                    region: "shanghai"
                }
            };
        },
        methods: {
            startPython(){
                 //调用python暴露的方法
                 eel.py_start()
            }
        }
    })
</script>

<script type="text/javascript">
    //暴露给python 的js方法
    eel.expose(js_insertLog)
    function js_insertLog(log) {
        vm.logArr.unshift(log)
        vm.logTextarea = vm.logArr.join('n');
    }

</script>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93