Как отправить переменную из файла python в файл javascript? - PullRequest
0 голосов
/ 09 марта 2020

Я создавал настольное приложение, используя pyqt5. В моем приложении есть виджет вкладки, а внутри этого виджета есть кнопка «Пуск». Итак, после нажатия этой кнопки создается список широт и долгот.

Я хочу отправить этот список в файл javascript (я использую буклет. js для создания карты), такой, что Я могу сделать карту, используя эту информацию. Как я могу отправить этот список в файл javascript из моего приложения python?

class App(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = 'Delivering & Tracking'
        self.setWindowTitle(self.title)

        self.tab_widget = MyTabWidget(self)
        self.setCentralWidget(self.tab_widget)

        self.showFullScreen()

class MyTabWidget(QWidget):
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QVBoxLayout(self)

        #Initialize tab screen
        self.tabs = QTabWidget()
        self.map_tab = Maps()

        self.tabs.resize(300,200)

        self.tabs.addTab(self.map_tab,QIcon("./icons and images/tab_map.png"), ('Map'))

        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)

class Maps(QWidget):
    def __init__(self):
        super().__init__()

        self.startButton()

    def startButton(self):
        button = QPushButton("Start", self)
        button.move(655, 415)
        button.clicked.connect(self.map)

        self.show()

    def map(self):
        #A list is generated in this function.
        latlon = []

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

Список латлонов, который генерируется внутри функции карты, я хочу отправить список в файл javascript , так что я могу использовать его на карте.

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Я не делал этого раньше, но из https://snorfalorpagus.net/blog/2014/09/13/embedding-a-leaflet-map-in-a-qt-application/ кажется, что вы можете иметь файл javascript на сервере и просто вставить в него координаты, прежде чем оценивать скрипт в кадре.

Если ваш файл javascript имеет следующий формат:

// map_source.js
// a lot of javascript
map.panTo(new L.LatLng($lat$, $long$));
// more javascript
// file end

Тогда вы можете ввести долготу и широту следующим образом:

def map(self):
    #A list is generated in this function.
    latlon = [latitude_value, longitude_value]
    with open('map_source.js', 'r') as f:
        lines = '<my custom newline>'.join(f.readlines())

    # substitute latitude
    lines = lines.replace('$lat$',str(latlon[0]))
    # substitute longitude
    lines = lines.replace('$long$',str(latlon[1]))
    # Now write the file back
    with open('map_source.js', 'w') as f:
        f.writelines(lines.split('<my custom newline>'))
0 голосов
/ 09 марта 2020

Я бы, вероятно, записал бы список в файл любого формата, который имеет больше всего смысла, а затем прочитал бы из этого файла с javascript, который вы используете!

Например (для записи):

with open("test.txt", "a") as f:
    for coord in latlon:
        f.write(coord + "\n")

Например (читать, лично я не знаю javascript, так что это может быть плохим решением):

const fs = require("fs");

fs.readFile("test.txt", "utf-8", (err, data) => {
    if (err) throw err;
    console.log(data);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...