PYGTK को PYGI: gtk.timeout_add समकक्ष


9

मैंने PYGI का उपयोग करने के लिए कुछ पायथन कोड परिवर्तित किए हैं, लेकिन मैं यह पता नहीं लगा सकता कि इस लाइन को कैसे परिवर्तित किया जाए:

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

स्पष्ट रूप से, चूंकि मुझे वास्तव में PYGTK और PYGI के बीच का अंतर नहीं पता है, मेरा नया कोड उपयोग करता है

from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator

जैसा कि यहाँ दिखाया गया है https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Python_version

पूर्ण कोड जिसे मैं बदलने की कोशिश कर रहा हूं वह यहां है http://pastebin.com/raw.php?i=aUtASRpy

के बराबर है

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

PYGI में?

मैं यह भी मान रहा हूं कि PYGI एक एकता सूचक बनाने का सबसे आधुनिक तरीका है

मैं यह भी मान रहा हूं कि संकेतक को राज्य बताने के लिए किसी वस्तु के बजाय किसी वस्तु की स्थिति की जांच करना सबसे अच्छा है। क्या अजगर के कार्यक्रम को हर पल कुछ चेक करना ठीक है?

धन्यवाद!

जवाबों:


1

बेहतर है कि प्रति ... एक प्रश्न ... प्रश्न पूछा जाए।

पायथन के मानक पुस्तकालय में threadingमॉड्यूल होता है जिसमें एक Timerवर्ग होता है जो वास्तव में आपकी आवश्यकता है। प्रलेखन

पुश बनाम पुल के बारे में - यह निश्चित रूप से बेहतर होता है जब आपके आवेदन को सूचना मिलती है जब कुछ होने पर (पुश) चेक करने के बजाय अगर कुछ हर दूसरे (पुल) में हुआ - "क्या हम अभी तक वहाँ हैं? क्या हम अभी तक वहाँ हैं? क्या हम अभी तक वहाँ हैं?" । "- क्योंकि यह आपके ऐप को सिर्फ सोने की अनुमति देता है और जब तक इसे अधिसूचित नहीं किया जाता है, तब तक कुछ भी नहीं किया जाता है, जब तक कि हर सेकंड एक ही रिपीटिंग चेक करने का विरोध नहीं किया जाता है। हालाँकि, यह है कि कुछ प्रकार की गतिविधियों के लिए अधिसूचना प्राप्त करना मुश्किल हो सकता है, इसलिए यह आपके आवेदन की प्रकृति पर निर्भर करता है। चेकिंग अक्सर करना भी बैटरी जीवन और अन्य सामान के लिए बुरा है।


धन्यवाद, यह मुझे इस pastebin.com/raw.php?i=0jLxZ994 को एक साथ हैक करने के लिए नेतृत्व करता है , stackoverflow.com/questions/9812344/… से बड़ी मदद के साथ , लेकिन अब, सीखने का समय है कि किस तरह से श्रोता बनाया जाए। मुझे लगता है कि "पोल" के बहुमत को पता चलेगा कि कुछ भी नहीं बदला गया है, लेकिन, वह दूसरी बार है। धन्यवाद!
onBootQuestioner

19

बस यह सुनिश्चित करने के लिए कि Gtk रास्ता भी एक उत्तर में मौजूद है:

के बराबर

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

gobject में आत्मनिरीक्षण (PyGI) है:

from gi.repository import GLib
GLib.timeout_add(PING_FREQUENCY * 1000, self.doWork)

हालांकि, हर एक्स सेकंड में नियमित रूप से कुछ की जाँच करते समय, आपको उपयोग करना चाहिए

GLib.timeout_add_seconds(PING_FREQUENCY, self.doWork)

यह ग्लिब को समय पर समूह बनाने की अनुमति देता है और इसलिए बिजली की बचत करता है, जो मोबाइल उपकरणों के लिए महत्वपूर्ण है। से प्रलेखन :

एक ही समय में आग लगाने के लिए समूह बनाने से अधिक शक्ति और सीपीयू कुशल व्यवहार होता है, इसलिए यदि आपका टाइमर सेकंड के गुणकों में है और आपको पहले टाइमर की आवश्यकता नहीं है तो अब से एक सेकंड पहले, glib.timeout_add_meconds (का उपयोग करें) ) glib.timeout_add () पर पसंद किया जाता है।


4
यह थ्रेडिंग का उपयोग करने से बेहतर लगता है। खासकर जब से थ्रेडिंग अजीब कीड़े और लॉकअप का कारण बन सकता है यदि आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं।
तिमो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.