我发现,在运行某些 Electron 应用程序时,我可以通过按 Cmd-Alt-I 来访问 Chrome 开发工具,而在其他一些应用程序上则不能。我想知道哪些设置可以避免/启用这种行为。
像在任何标准本机应用程序中一样,我的电子应用程序也需要根据实时使用结果来更改几个菜单项的状态(启用/禁用)。
我在main.js中设置菜单:
function createWindow () {
...
...
require('./menu/mainmenu');
}
Run Code Online (Sandbox Code Playgroud)
我需要更改的MenuItem在mainmenu中定义:
{ label: "Show Colors",
accelerator: 'CmdOrCtrl+1',
enabled: getStatus(),
click() {getWebviewWebContents().send('switchToColors');}
},
Run Code Online (Sandbox Code Playgroud)
getStatus()
函数在哪里返回false
或true
。
所有这些在Electron中都不起作用,因为菜单是在应用程序启动时创建的,根本无法修改。我相信这是一个严重的不足,因为动态菜单项非常常见(即:菜单复选框,启用/禁用等)。
有什么解决方法吗?
这是我的代码中函数的内存分析器的输出,使用 xarray (v.0.16.1) 数据集:
Line # Mem usage Increment Line Contents
================================================
139 94.195 MiB 94.195 MiB @profile
140 def getMaps(ncfile):
141 335.914 MiB 241.719 MiB myCMEMSdata = xr.open_dataset(ncfile).resample(time='3H').reduce(np.mean)
142
143 335.945 MiB 0.031 MiB plt.figure(figsize=(20.48, 10.24))
144
145 # projection, lat/lon extents and resolution of polygons to draw
146 # resolutions: c - crude, l - low, i - intermediate, h - high, f - full
147 336.809 MiB 0.863 MiB map = Basemap(projection='merc', llcrnrlon=-10.,
148 335.945 MiB 0.000 …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的 PWA,可以在线正常工作。我还在 Chrome Dev Tools 中测试了离线行为,服务工作者完美地完成了它的工作。但是当我从我的 Android 手机运行该应用程序时,它无法离线工作,因为离线时缓存存储不再存在。
这是服务人员:
var dataCacheName = 'myappData-v3n';
var cacheName = 'myapp-3n';
var filesToCache = [
'/meteosurf/',
'/meteosurf/index.html',
'scripts/hammer.min.js',
'images/play_white.svg',
'images/stop_white.svg',
'images/back_white.svg',
'images/forward_white.svg',
'images/sfondo.jpg',
'images/ic_refresh_white_24px.svg',
'scripts/meteo-zoom.js',
'scripts/meteosurf_200.js',
'scripts/jquery3-2-1.min.js',
'scripts/jqueryui1-12-1.min.js',
'styles/inline_01.css',
'styles/meteosurf_200.css',
'styles/jqueryui-smoothness.css',
'styles/images/ui-bg_glass_65_ffffff_1x400.png',
'styles/images/ui-icons_454545_256x240.png',
'images/icons/icon-64x64.png',
];
self.addEventListener('install', function(e) {
console.log('[ServiceWorker] Install');
e.waitUntil(
caches.open(cacheName).then(function(cache) {
console.log('[ServiceWorker] Caching app shell');
return cache.addAll(filesToCache);
})
);
});
self.addEventListener('activate', function(e) {
console.log('[ServiceWorker] Activate');
e.waitUntil(
caches.keys().then(function(keyList) {
return Promise.all(keyList.map(function(key) {
if (key !== cacheName && key !== dataCacheName) {
console.log('[ServiceWorker] Removing …
Run Code Online (Sandbox Code Playgroud) 我正在从我的 php 运行一个 python 脚本:
<?php
$command = escapeshellcmd('<path>/myscript.py');
$output = shell_exec($command);
echo $output;
?>
Run Code Online (Sandbox Code Playgroud)
现在我需要将一个二维字符串数组从 python 脚本传递到 php 页面,但我很困惑。当然,$output
将包含整个数组的单个字符串。我也考虑过 json,但在那种情况下,我应该将 python 数组转换为 json 字符串(这可能是另一个问题)...
我的传单项目上有一个mapbox地图和一个Image Overlay.我需要将图像放在地图下方(有透明区域),但我也尝试使用bringToBack()而没有运气.
这是代码:
mymap = new L.Map('map').setView([41.69906, 12.39258],5);
L.tileLayer('https://api.mapbox.com/styles/v1/.....',
{zIndex:90}).addTo(mymap);
var bounds = new L.LatLngBounds (
new L.LatLng(30,-10),
new L.LatLng(50,36));
mymap.fitBounds(bounds);
var overlay = new L.ImageOverlay("image.png" ,
bounds, {
attribution: "E.U Copernicus Marine Environment Monitoring Service"
});
mymap.addLayer(overlay);
overlay.bringToBack();
Run Code Online (Sandbox Code Playgroud)
传单文档允许将toToBack带到ImageOverlay,但我认为叠加层和地图位于2个不同的堆栈中.
我正在从我的快速脚本中生成命令,但我需要区分错误和成功。我正在寻找一个child.on('success'...)
功能,但它不存在。
这段代码(当然)不起作用。
app.get(myID+'/test/', function(req, res){
var child = spawn('lbg');
child.on('error', function(err) {
console.log('Failed to start child process.');
res.status(404).send("Cannot send test command");
return;
});
res.json({statusMessage: "OK", statusCode: "200"});
});
Run Code Online (Sandbox Code Playgroud)
换句话说,我只需要触发正确的响应,而不是两者都触发!
在我的Flask应用程序中,我有一个类似的循环,由客户端发出的套接字消息启动:
@socketio.on('start')
def my_start():
global thread
if thread is None:
thread = socketio.start_background_task(target=background_thread)
def background_thread():
for i in range(1,100):
socketio.emit('my_mess',{'data': i})
if <**condition**>== True:
socketio.emit('aborted')
break
if <**condition**> == False:
socketio.emit('Success',{'data': '16.34 GB'})
else:
<**condition**> = False
Run Code Online (Sandbox Code Playgroud)
问题是:如何从客户端停止/中止循环?我尝试设置"中止"消息,但它不起作用.换句话说,我如何使用<**condition**>
我在代码中起草的?