Привязка кнопки к функции VPython 7
В настоящее время я пытаюсь сделать физическое моделирование с использованием VPython на моем ноутбуке. Я хочу сделать графический интерфейс, чтобы, когда клиент нажимал кнопку запуска симуляции, он открывал Chrome и симуляция запускалась после получения ввода пользователя из полей ввода. Однако, когда я запускаю исходный код, chrome автоматически открывается, и я хочу, чтобы он открывался только тогда, когда пользователь нажимает кнопку запуска симуляции. Я пытался использовать лямбда-метод для привязки функции к кнопке, но она не работает. Вот очень упрощенная версия того, что я пытаюсь сделать:
import tkinter as tk
from vpython import *
### Simulation ###
def run_simulation(r):
sphere(radius=r)
### GUI ###
root = tk.Tk()
text_variable = tk.StringVar()
entry = tk.Entry(root, textvariable=text_variable, width=10)
entry.pack()
button = tk.Button(root, text='Run Simulation', command= lambda: run_simulation(eval(text_variable.get())))
button.pack()
root.mainloop()
Короче говоря, если вы запустите этот код, он автоматически откроет Chrome (даже если я использовал лямбду), но я хочу, чтобы он делал это только при нажатии кнопки. Заранее спасибо.
1 ответ
Вот несколько демонстрационных программ vpython, которые вы можете запустить в браузере с помощью glowscript vpython
http://www.glowscript.org/#/user/GlowScriptDemos/folder/Examples/
Просто нажмите Run рядом с изображением, и он запустит симуляцию.
Эти же демо-программы vpthon можно найти на github здесь.
https://github.com/BruceSherwood/vpython-jupyter/tree/master/Demos_no_notebook
Вы можете запускать программы из командной строки Windows, если на вашем компьютере установлен python 3.6. Просто введите
python BinaryStar.py
и он откроет веб-браузер и запустит демонстрационную программу BinaryStar vpython. Вы можете сделать то же самое для других демонстрационных программ в каталоге выше на github.
Возможно, вы можете заставить свою кнопку запустить команду "python myVpythonProgram.py", чтобы запустить программу vpython, которую вы хотите запустить в браузере.