पीईजीटीके या जीटीके या अन्य प्रोग्रामिंग भाषा में खोले गए विंडोज़ कैसे प्राप्त करें? उबंटू में?उबंटू में पीईजीटीके या जीटीके में खोले गए विंडोज़ कैसे प्राप्त करें?
संपादित करें:
मैं चाहता हूँ डेस्कटॉप पर सूची रास्तों खोला निर्देशिका प्राप्त करें!
पीईजीटीके या जीटीके या अन्य प्रोग्रामिंग भाषा में खोले गए विंडोज़ कैसे प्राप्त करें? उबंटू में?उबंटू में पीईजीटीके या जीटीके में खोले गए विंडोज़ कैसे प्राप्त करें?
संपादित करें:
मैं चाहता हूँ डेस्कटॉप पर सूची रास्तों खोला निर्देशिका प्राप्त करें!
आप शायद libwnck उपयोग करना चाहते हैं:
http://library.gnome.org/devel/libwnck/stable/
मेरा मानना है कि अजगर-GNOME या कुछ इसी तरह की पैकेज में अजगर बाइंडिंग देखते हैं।
एक बार जब आप जीटीके + mainloop चल रहा है, तो आप निम्न कर सकते हैं:
import wnck window_list = wnck.screen_get_default().get_windows()
कि सूची में से एक खिड़की पर कुछ रोचक तरीके हैं get_name() और सक्रिय()।
यह बटन क्लिक करते समय विंडोज़ के नाम कंसोल पर प्रिंट करेगा। लेकिन किसी कारण से मुझे दो बार बटन क्लिक करना पड़ा। यह मेरा पहला समय libwnck का उपयोग कर रहा है, इसलिए शायद मुझे कुछ याद आ रहा है। :-)
import pygtk pygtk.require('2.0') import gtk, wnck class WindowLister: def on_btn_click(self, widget, data=None): window_list = wnck.screen_get_default().get_windows() if len(window_list) == 0: print "No Windows Found" for win in window_list: print win.get_name() def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.button = gtk.Button("List Windows") self.button.connect("clicked", self.on_btn_click, None) self.window.add(self.button) self.window.show_all() def main(self): gtk.main() if __name__ == "__main__": lister = WindowLister() lister.main()
gtk.gdk.window_get_toplevels()
gtk.gdk.window_get_toplevels()
समारोह सभी उच्चस्तरीय डिफ़ॉल्ट स्क्रीन पर PyGTK के लिए जाना जाता खिड़कियों की एक सूची देता है। एक अपूर्ण विंडो रूट विंडो का बच्चा है (gtk.gdk.get_default_root_window()
फ़ंक्शन देखें)।
यह केवल एक विंडो देता है - "('UTF8_STRING', 8, 'wnd.py')", और मेरे पास तीन खुले जीएडिट विंडो हैं – john
मुझे परीक्षण के बाद एक ही समस्या मिल रही है - फ़ंक्शन संदर्भ के रूप में काम नहीं करता था सुझाव दिया कि यह होगा। नवामन द्वारा सुझाए गए अनुसार wmctrl -l को कॉल का उपयोग करने के बजाय अब आपकी सबसे अच्छी शर्त है; इसके अलावा एकमात्र चीज जिसे मैं सोच सकता हूं वह सीधे एक्स 11 मॉड्यूल का उपयोग कर रहा है। –
मुझे वास्तव में यह नहीं पता कि एक विंडो एक जीटीके है या नहीं। लेकिन अगर आप यह देखना चाहते हैं कि वर्तमान में कितनी खिड़कियां खुली हैं तो "wmctrl -l" आज़माएं। निश्चित रूप से इसे पहले स्थापित करें।
कमांड लाइन उत्पादन पार्स आमतौर पर सबसे अच्छा तरीका नहीं है, तो आप उस कार्यक्रमों उत्पादन नहीं बदल रहा है, जो संस्करण या platfrom से भिन्न हो सकता है पर निर्भर हैं। यहाँ कैसे Xlib का उपयोग कर यह करने के लिए है:
import Xlib.display
screen = Xlib.display.Display().screen()
root_win = screen.root
window_names = []
for window in root_win.query_tree()._data['children']:
window_name = window.get_wm_name()
window_names.append(window_name)
print window_names
ध्यान दें कि यह सूची खिड़कियों कि आप सामान्य रूप से 'विंडोज़' के रूप में वर्गीकृत नहीं होता शामिल होंगे, लेकिन है कि आप क्या करने की कोशिश कर रहे हैं के लिए कोई फर्क नहीं पड़ता।
किसी भी कारण से, मैं कोई टिप्पणी पोस्ट नहीं कर सकता, लेकिन मैं इसे सैंडी के उत्तर में एक जोड़ के रूप में जोड़ना चाहता हूं।
यहाँ कंसोल पर वर्तमान विंडो को सूचीबद्ध करती है कि कोड का एक हिस्सा है:
import pygtk
pygtk.require('2.0')
import gtk, wnck
if __name__ == "__main__":
default = wnck.screen_get_default()
while gtk.events_pending():
gtk.main_iteration(False)
window_list = default.get_windows()
if len(window_list) == 0:
print "No Windows Found"
for win in window_list:
if win.is_active():
print '***' + win.get_name()
else:
print win.get_name()
धन्यवाद सैंडी!
2013 में आपका स्वागत है! यहां Wnck
और अब इसके बहिष्कृत पीईजीटीके विधि के बजाय इसके आधुनिक गोब्जेक्ट इंट्रोसक्शन लाइब्रेरी का उपयोग कर कोड है।तुम भी जाँच कर सकते हैं my other answer about wnck:
from gi.repository import Gtk, Wnck
Gtk.init([]) # necessary only if not using a Gtk.main() loop
screen = Wnck.Screen.get_default()
screen.force_update() # recommended per Wnck documentation
# loop all windows
for window in screen.get_windows():
print window.get_name()
# ... do whatever you want with this window
# clean up Wnck (saves resources, check documentation)
window = None
screen = None
Wnck.shutdown()
प्रलेखन के लिए के रूप में, Libwnck Reference Manual की जाँच करें। यह अजगर के लिए विशिष्ट नहीं है, लेकिन GObject आत्मनिरीक्षण का उपयोग करने का पूरा बिंदु सभी भाषाओं में एक ही एपीआई होना है, gir
बाइंडिंग के लिए धन्यवाद।
इसके अलावा, दोनों wnck
एवं इससे संबंधित gir
बॉक्स से बाहर बंधन के साथ Ubuntu जहाजों, लेकिन यदि आप उन्हें स्थापित करने की आवश्यकता:
sudo apt-get install libwnck-3-* gir1.2-wnck-3.0
यह भी libwnck-3-dev
स्थापित हो जाएगा, जो आवश्यक नहीं है लेकिन उपयोगी स्थापित हो जाएगा प्रलेखन जो आप DevHelp
में सामान्य समस्याएं देखें यह समाधान मेरे लिए काम करता है, जबकि स्वीकृत उत्तर में एक त्रुटि उत्पन्न हुई कि कोई 'wnck.screen_get_default() 'नहीं है। हालांकि यह उत्तर दूसरे की तुलना में नया है, मुझे लगता है कि यह स्वीकार्य उत्तर होना चाहिए, क्योंकि पुराना अब काम नहीं करता है। – Zelphir
का उपयोग करके पढ़ सकते हैं कृपया स्पष्ट करें: क्या आप सभी नॉटिलस विंडो के सभी टैब में दिखाए गए निर्देशिकाओं की सूची प्राप्त करना चाहते हैं? – akaihola