इलेक्ट्रॉन ऐप से मेनूबार निकालें


104

मैं अपने इलेक्ट्रॉन ऐप्स से इस मेनू-बार को कैसे निकालूं:

मेनू पट्टी

यह भी कहता है "हैलो वर्ल्ड" (यह इसलिए है क्योंकि मैंने इलेक्ट्रॉन प्री-बिल्ट डाउनलोड किया है, और मैं एक बार आवेदन को पैकेज करने के बाद चला जाऊंगा))। मैंने इन्हें html में कोड नहीं किया, इसलिए मुझे नहीं पता कि इसे कैसे निकाला जाए! -

जवाबों:


149

आप उपयोग कर सकते हैं w.setMenu(null)या सेट कर सकते हैं frame: false(यह आपकी विंडो पर बंद, कम से कम और अधिकतम विकल्प के लिए बटन भी हटाता है)। देखें setMenu () या BrowserWindow () । इस धागे की भी जाँच करें


इलेक्ट्रॉन अब win.removeMenu()( v5.0.0 में जोड़ा गया है ), उपयोग करने के बजाय अनुप्रयोग मेनू को हटाने के लिए win.setMenu(null)


इलेक्ट्रॉन 7.1.x एक बग है जहाँ win.removeMenu()काम नहीं करता है लगता है । उपयोग करने के लिए एकमात्र समाधान हैMenu.setApplicationMenu(null)


4
frame: falseमेरे लिए किया।
mwilson

5
fwiw removeMenu()लिनक्स और विंडोज केवल
वसंत

विंडो के बारे में क्या है। पहले से खुली हुई विंडो में मेनू द्वारा विंडो (ओपन) द्वारा खोला गया है?
माइकल

4
इलेक्ट्रॉन 7.1.1 एक मुद्दा जहां है setMenuऔर removeMenuअब और काम नहीं करते लिंक
पी Fuster

1
न तो मूल या संपादित समाधान काम करते हैं। यह अब जवाब नहीं होना चाहिए।
टायगुए

63

इसे इस्तेमाल करो:

mainWindow = new BrowserWindow({width: 640, height: 360})
mainWindow.setMenuBarVisibility(false)

संदर्भ: https://github.com/electron/electron/issues/1415

मैंने कोशिश की mainWindow.setMenu(null), लेकिन यह काम नहीं किया।


2
मैंने mainWindow.setMenu(null)इलेक्ट्रॉन ५.०.२ के साथ प्रयास किया और यह मेरे लिए भी कारगर नहीं रहा। निश्चित नहीं है कि मुझे हर जगह इसका इस्तेमाल करने की सलाह क्यों दी जा रही है, और अगर मैं केवल एक ही हूं जो गलत तरीके से कुछ कर रहा है तो भटक ​​रहा था। उपयोग की आपकी सलाह setMenuBarVisibility, हालांकि मेनू बार की दृश्यता को हटा देती है, इसे पूरी तरह से नहीं हटाती है। यह Altकुंजी दबाकर वापस लाया जा सकता है ।
आर्टियम

1
FWIW: इलेक्शन 6.0.X के साथ .setMenu(null)या .removeMenu()मेरे लिए काम नहीं किया। .setMenuBarVisibility(false)मेनू बार को हटाता है और Altकुंजी केवल तभी काम करता है जब .setAutoHideMenuBar(true)चलाया जाता है।
बॉब नडलर

1
+1, आर्क लिनक्स में, setMenu(null)काम नहीं किया, लेकिन setMenuBarVisibility(false)उम्मीद के मुताबिक काम करता है (बार का उल्लेख @Artium के रूप में कुंजी दबाकर नहीं किया जा सकता है alt)।
अमीर ए। शबानी

यह वह उपाय है जो मेरे लिए काम करता है। उत्तर जो सही है, वह उबंटू 18.04, इलेक्ट्रॉन v6.0.9 पर काम नहीं करता है
क्रिस्टोफर

महान! मुझे मेनू बार दिखाए बिना कीबोर्ड शॉर्टकट शामिल करने के लिए एक सरल तरीके की आवश्यकता थी। अनेक अनेक धन्यवाद!
अनीस आर।

26

इलेक्ट्रॉन 7.1.1 के लिए, आप इसका उपयोग कर सकते हैं:

const {app, BrowserWindow, Menu} = require('electron')
Menu.setApplicationMenu(false)

6
मेरे लिए अपडेट संपादित करें: अन्य समाधानों Menu.setApplicationMenu(null)में 7.1.2काम किया मेरे लिए काम नहीं किया!
टेसाववल्लिज्न

1
यह 7.1.4 पर भी काम करता है। कृपया यह सुनिश्चित करने के लिए कि इस समस्या से हर कोई समाधान तक पहुंचने में सक्षम होगा, सही उत्तर अपडेट करें।
एमिलियो नुमाज़ाकी

इलेक्ट्रॉन में मेरे लिए काम करता है 7.1.6
Iuninefrendor

1
@OP - शानदार उत्तर के लिए ढेर अतिप्रवाह और धन्यवाद! एक नोट - एमएस वर्ड जैसे अन्य कार्यक्रमों से उद्धरण चिह्नों को कॉपी और पेस्ट करते समय कृपया सावधान रहें। 'इलेक्ट्रॉन ’जैसे प्रारूपित उद्धरण ज्यादातर मामलों में in इलेक्ट्रॉन’ की तरह अनफ़ॉर्मेटेड उद्धरण नहीं हैं।
sfarbota

1
इलेक्ट्रॉन 7.19 यह मेरे लिए काम करता है निश्चित रूप से सही जवाब के रूप में अद्यतन किया जाना चाहिए
Darkrender

9

जब आप अपने ऐप को पैकेज करते हैं तो डिफ़ॉल्ट मेनू अब नहीं होगा, यदि यह आपको विकास के दौरान setMenu(null)खराब कर रहा है तो आप ब्राउज़र विंडो पर @TonyVincent द्वारा सुझाए गए अनुसार कॉल कर सकते हैं।


उस पैकेजिंग का उल्लेख करने के लिए धन्यवाद, ऐप डिफ़ॉल्ट मेनू को हटा देगा। मैं उस विशिष्ट बिंदु के बारे में सोच रहा था।
राडदेवस

9

7.0.0 तक, उपरोक्त समाधानों में से अधिकांश अब काम नहीं करते हैं। BrowserWindow.setMenu()द्वारा प्रतिस्थापित किया गया है Menu.setApplicationMenu(), जो अब सभी विंडो पर मेनू बदलता है। setMenu(),removeMenu() अब कुछ भी नहीं करते हैं, जिस तरह से डॉक्स में अभी भी उल्लेख किया गया है।

setAutoHideMenuBar()अभी भी काम करता है, लेकिन एक उपद्रव हो सकता है यदि आपने Alt को हॉटकी संशोधक के रूप में उपयोग करने की योजना बनाई है। मेनू दिखाई देने के बाद आपको फिर से मेनू को छिपाने के लिए विंडो (ढीले फोकस) से दूर क्लिक करना होगा।

यदि आपके एप्लिकेशन में एक से अधिक विंडो हैं, तो आप प्रत्येक विंडो पर अलग से मेनू सेट / निकाल नहीं सकते हैं। मेनू को हटाने का एकमात्र तरीका फ्रेमलेस विंडो दृष्टिकोण का उपयोग करना है। यह वही होता है जो मैं अपने वर्तमान आवेदन में चाहता हूं, लेकिन सभी मामलों में एक अच्छा समाधान नहीं है।


धन्यवाद, यह केवल एक चीज है जो 7.0 से काम करती है! क्या डॉक्स / चेंगलॉग्स / आदि में इसका कोई उल्लेख है?
rvighne

जीथब प्रोजेक्ट लिंक में एक मुद्दा खुला है । पता नहीं कि यह योजना बनाई गई थी या बग।
पी फस्टर

9

मेनू को छिपाया या ऑटो-छिपाया जा सकता है (जैसे स्लैक या वीएस कोड में - आप मेनू को दिखाने / छिपाने के लिए Alt दबा सकते हैं )।

प्रासंगिक तरीके:

---- win.setMenu (मेनू) - मेनू को विंडो के मेनू बार के रूप में सेट करता है, इसे शून्य पर सेट करने से मेनू बार हट जाएगा। ( यह पूरी तरह से मेनू को हटा देगा )

mainWindow.setMenu(null)


---- win.setAutoHideMenuBar (hide) - सेट करता है कि विंडो मेन्यू बार अपने आप ही छिप जाए। मेन्यू बार सेट करने के बाद केवल
तब दिखाई देगा जब उपयोगकर्ता एकल Alt कुंजी दबाएंगे

mainWindow.setAutoHideMenuBar(true)

स्रोत: https://github.com/Automattic/simplenote-electron/issues/293

दिखाया गया bellow के रूप में एक फ्रेम रहित खिड़की बनाने की विधि भी है:

(कोई करीबी बटन नहीं। कुछ भी नहीं। हम जो चाहते हैं (बेहतर डिजाइन))

const { BrowserWindow } = require('electron')
let win = new BrowserWindow({ width: 800, height: 600, frame: false })
win.show()

https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows

दस्तावेज़: https://electronjs.org/docs/api/frameless-window

संपादित करें: (नया)

win.removeMenu() लिनक्स विंडोज विंडो के मेन्यू बार को हटा दें।

https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows

Win.removeMenu () win.setMenu (नल) का उपयोग करने के बजाय एप्लिकेशन मेनू को हटाने के लिए जोड़ा गया

यह v5 से प्रति के रूप में जोड़ा गया है:

https://github.com/electron/electron/pull/16570

https://github.com/electron/electron/pull/16657

इलेक्ट्रॉन v7 बग

इलेक्ट्रॉन 7.1.1 के लिए Menu.setApplicationMenuइसके बजाय का उपयोग करेंwin.removeMenu()

इस धागे के अनुसार:
https://github.com/electron/electron/issues/16521

और बड़ा नोट है: BrowserWindow बनाने से पहले आपको इसे कॉल करना होगा ! या यह काम नहीं करेगा!

const {app, BrowserWindow, Menu} = require('electron')

Menu.setApplicationMenu(null);

const browserWindow = new BrowserWindow({/*...*/});

अद्यतन (BrowserWindow निर्माण पर autoHideMenuBar की स्थापना)

@Kcpr टिप्पणी के रूप में! हम संपत्ति और कई निर्माण पर सेट कर सकते हैं

यह अब तक के नवीनतम स्थिर संस्करण पर उपलब्ध है जो कि 8.3 है!
लेकिन पुराने संस्करणों में भी मैंने v1, v2, v3, v4 की जाँच की!
यह सभी संस्करणों में है!

इस लिंक के अनुसार
https://github.com/electron/electron/blob/1-3-x/docs/api/browser-window.md

और v8.3 के लिए
https://github.com/electron/electron/blob/v8.3.0/docs/api/browser-window.md#new-browserwindowoptions

डॉक्टर लिंक
https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions

विकल्प के लिए डॉक्टर से:

AutoHideMenuBar बूलियन (वैकल्पिक) - जब तक Alt कुंजी दबाया नहीं जाता तब तक मेनू बार को ऑटो छिपाएं। डिफ़ॉल्ट गलत है।

यहाँ यह वर्णन करने के लिए एक स्निपेट है:


let browserWindow = new BrowserWindow({
    width: 800,
    height: 600,
    autoHideMenuBar: true // <<< here
})

1
setAutoHideMenuBar पदावनत है
मिस्टर सिरकोड

नीचे एडमर द्वारा दिया गया उत्तर एक बेहतर संस्करण है, मेनू को ऑटोहाइड करने के लिए नवीनतम कोड
मिस्टर सिरकोड

1
इलेक्ट्रॉन 8.2.5 में (मैं भी है कि संदेह है पिछले संस्करणों में) यह निर्धारित करना संभव है, कि मेनू पट्टी ऑटो छुपा में होना चाहिए BrowserWindowताकि जैसे निर्माता: new BrowserWindow({autoHideMenuBar: true})। और, वैसे, इस उत्तर के लिए धन्यवाद। यह मुझे सबसे अधिक संभवतया एक पूर्ण लगता है (यह मानते हुए कि विधियां अभी भी मौजूद हैं और पदावनत नहीं हैं)।
kcpr

@kcpr आपके उत्तर के लिए धन्यवाद! मैंने इसे प्रतिबिंबित करने के लिए उत्तर अपडेट किया!
मोहम्मद अल्ल

@ मोहम्मदअलाल, मस्त! धन्यवाद, मुझे खुशी है कि आप मेरी टिप्पणी को उपयोगी मानते हैं। और आपके द्वारा किए गए अतिरिक्त शोध और आपके द्वारा साझा किए गए परिणामों के लिए भी, धन्यवाद।
kcpr

6
@"electron": "^7.1.1" : 

mainWindow = new browserWindow({ height: 500, width: 800});
//mainWindow.setAutoHideMenuBar(true);
mainWindow.autoHideMenuBar = true;

ब्राउज़र में मेनू के बिना अपेक्षित काम करना।


(इलेक्ट्रॉन) 'setAutoHideMenuBar फ़ंक्शन' को हटा दिया गया है और हटा दिया जाएगा। कृपया इसके बजाय 'autoHideMenuBar संपत्ति' का उपयोग करें। @ "इलेक्ट्रॉन": "^ 7.1.1": mainWindow = new browserWindow ({ऊंचाई: 500, चौड़ाई: 800}); mainWindow.autoHideMenuBar = true;
रचौरी

3

इस समस्या के उत्तर के बाद , आपको विंडो बनाने से Menu.setApplicationMenu(null) पहले कॉल करना होगा


अरे, स्टैक ओवरफ्लो में आपका स्वागत है! अन्य उत्तरों के लिंक उत्तर के बजाय टिप्पणियों के रूप में बेहतर अनुकूल हैं। ऐसा इसलिए है क्योंकि आप वास्तव में इस उपयोगकर्ता के विशिष्ट परिदृश्य से जुड़े प्रश्न में उत्तर को लागू नहीं कर रहे हैं।
डेविड चोपिन



0

इन समाधानों में बग है। नीचे दिए गए समाधानों का उपयोग करते समय, विंडो बंद होने में देरी होती है।

Menu.setApplicationMenu(null),
&&
const updateErrorWindow = new BrowserWindow({autoHideMenuBar: true});

मैंने नीचे समाधान का उपयोग किया। यह अब के लिए बेहतर है।

const window= new BrowserWindow({...});
window.setMenuBarVisibility(false);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.