4 पॉइंट द्वारा GN⁺ 2023-12-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • PySimpleGUI ने अपने commercialisation प्रयास को समाप्त करने के बाद PySimpleGUI 5 code से license और security components हटाकर GitHub और PyPI पर LGPL3 license के साथ PySimpleGUI 6 के रूप में फिर से जारी किया है
  • नवीनतम version को python -m pip install PySimpleGUI से install किया जा सकता है, और पुराना version 4.60.5.1, GitHub का master, या कोई specific release जैसे 6.1 भी pip से सीधे install किए जा सकते हैं
  • PySimpleGUI को tkinter आदि GUI libraries के wrapper के रूप में पेश किया गया है, जो GUI SDK को अधिक सरल और compact structure में बदलते हुए detailed customization देता है और जिसके लिए पहले से GUI programming experience की आवश्यकता नहीं बताई गई है
  • version 6.2 में Window.settings_save bug fix, Multiline image inline output, psgupgrade, Tree node programmatic selection, Window.start_timer के "H:M:S" string timers, और Frame border color setting जैसी चीजें शामिल हैं
  • project को pull requests स्वीकार किए बिना maintain किया जा रहा है, और long-term future अनिश्चित है, लेकिन लेखक ने code लिखना और ecosystem को व्यवस्थित करना जारी रखने की बात कही है

PySimpleGUI 6 का फिर से open source होना

  • PySimpleGUI ने commercialisation की कोशिश की, लेकिन project को अपेक्षित स्तर पर जारी रखने के लिए जरूरी resources नहीं जुटा पाया
  • फरवरी 2025 में PySimpleSoft को बंद करने और 2025 के अंत तक support जारी रखने की घोषणा की गई, और उसके बाद code, docs, और repositories का क्या किया जाए, यही बाकी सवाल था
  • PySimpleGUI 5 code से license और security components हटाने के बाद उसे GitHub और PyPI पर जारी किया गया
  • नए public version में LGPL3 license इस्तेमाल किया गया है
  • Udemy course कुछ समय तक free दिया जाएगा, और coupon code 033334A16163C571B739 है

Install करने का तरीका

  • PyPI का latest v6 install करें:
    • python -m pip install PySimpleGUI
  • पुराना version 4.60.5.1 install करें:
    • python -m pip install PySimpleGUI==4.60.5.1
  • GitHub repository का latest code सीधे install किया जा सकता है:
  • GitHub का specific release install करने के लिए master को release number से बदलें:
  • repository को clone या download करने के बाद local install भी संभव है:
    • python -m pip install .

PySimpleGUI की भूमिका

  • PySimpleGUI, tkinter और अन्य GUI libraries को wrap करने वाला wrapper है
  • यह GUI SDK को अधिक सरल और compact structure में बदलते हुए detailed customization देता है
  • इसे ऐसे पेश किया गया है कि इसके लिए पहले से GUI programming experience की जरूरत नहीं है
  • README का उदाहरण केवल Text, Input, Button, Window, event loop, window.read(), और window.close() से interactive window app बनाता है
  • docs Docs.PySimpleGUI.com पर उपलब्ध हैं

Development तरीका और long-term outlook

  • बताया गया है कि PySimpleGUI पारंपरिक open source project की तुलना में एक proprietary product के करीब तरीके से develop किया गया है
  • pull requests स्वीकार नहीं किए जाते
  • long-term future स्पष्ट नहीं है, लेकिन फिलहाल लेखक code लिखने और मदद करने का आनंद ले रहा है
  • लेखक ने PySimpleGUI के अनुभव को ऐसा “once-in-a-lifetime” अनुभव बताया जिसमें वह लोगों द्वारा बनाई गई चीजें देख सका

Version 6.2 की features और fixes

  • 6.2 में Window.settings_save bug fix शामिल है
  • Multiline element में image को inline “print” करने की सुविधा जोड़ी गई है
  • latest maintenance release में upgrade करने की सुविधा फिर से PySimpleGUI में built-in कर दी गई है
    • Home Window या command line psgupgrade इस्तेमाल किया जा सकता है
    • release notes देखकर नया version install किया जा सकता है
  • वह #5750 bug fix किया गया है जिसमें Graph event, write_event_value event मिलने पर infinite loop में चला जाता था
    • इसे realtime button flag हटाने के तरीके से ठीक किया गया है
    • लिखा गया है कि change scope Graph element की condition तक सीमित है, इसलिए regression की संभावना कम है
  • Tree.update में select_node_keys parameter जोड़ा गया है, जिससे tree nodes को user selection की तरह programmatically select किया जा सकता है
  • Multiline की echo_stdout_stderr feature और parameter को ठीक किया गया है
    • अब यह तभी echo करता है जब stdout या stderr को उस element की ओर reroute किया गया हो
    • यह feature खुद rerouting नहीं करती
  • #6686 fix से वह समस्या हल हुई जिसमें Calendar chooser button केवल window.read return होने के समय उन fields को clear करता था जिन्हें हटाया जाना चाहिए था
  • Home Window में maintenance release version number दिखाया जाता है और install button की position बदली गई है
  • Window.start_timer call करते समय "H:M:S" string के रूप में timer दिया जा सकता है
  • scrollable Column element में केवल horizontal scroll support जोड़ दिया गया है
  • Frame element में border_color, border_width_no_relief parameters जोड़े गए हैं, जिनसे border color सेट किया जा सकता है
    • अगर अलग से setting न हो, तो Frame border color default के रूप में text element color इस्तेमाल करता है
  • docs के call reference section को 6.2 release के अनुसार update किया गया है

Drag and drop और आसपास के projects

  • drag and drop को लंबे समय से चाही गई feature बताया गया है, और कहा गया है कि PySimpleGUI code बदले बिना user code space में इसे implement करने का तरीका मिला है
  • psgdnd, PySimpleGUI में drag and drop जोड़ने वाला नया package है
    • इसे pip से install कर इस्तेमाल किया जा सकता है
    • अधिक जानकारी और examples उस repository में हैं
  • psgdnd 6.0.1 PyPI पर release किया गया है और Windows पर काम करता है
  • GitHub की 6.0.2 में Linux के लिए जरूरी fixes शामिल हैं
  • Mac support की स्थिति अभी स्पष्ट नहीं है
  • PSGMicroPython repository में MicroPython आधारित microcontrollers के साथ interface करने वाला code जोड़ा गया है
    • यह Raspberry Pi Pico और ESP32 पर काम करता है
    • संभव है कि यह अन्य boards पर भी काम करे
    • इसे robust या बड़े project के लिए नहीं बनाया गया, बल्कि उपयोगी हो सकने वाले code के रूप में पेश किया गया है

PSGWeb prototype

  • PSGWeb, PySimpleGUI को browser window में चलाने वाला prototype है
  • यह अधिकांश demo programs के साथ काम करता है
  • GitHub पर किसी PySimpleGUI application URL के आगे psgweb.us जोड़कर उसे चलाने की कोशिश की जा सकती है
  • PSGWeb को बड़े PSG 5 काम के हिस्से के रूप में बनाया गया था, लेकिन public नहीं किया गया
  • इस prototype को release या expand करने की कोई योजना नहीं है

AI उपयोग पर रुख

  • लेखक LLM का इस्तेमाल docs search, summarization, error lookup, research, और knowledge acquisition के लिए करता है
  • LLM से code नहीं लिखवाता
  • कारण यह बताया गया है कि उसे खुद code लिखना पसंद है
  • project को pull requests के लिए open न रखने का कारण भी यही बताया गया कि वह चाहता था कि दूसरे लोग code लिखने के बजाय वह खुद लिखे
  • AI युग में PySimpleGUI की relevance पर लेखक का मानना है कि हर दिन लोग PySimpleGUI को ढूंढें, install करें, और कम से कम एक व्यक्ति भी उसका उपयोग करे, तो वही काफी है
  • लेखक ने कहा कि Windows apps बनाते समय वह PySimpleGUI के बिना सोचना मुश्किल समझता है
    • हाल की 6502 breadboard computer project में उसने दो Raspberry Pi Pico और एक PySimpleGUI app से bus analyzer बनाया
    • उसने कहा कि Windows पर tools को control करने वाला frontend app PySimpleGUI से आसानी से बनाया जा सका

Project history और funding समस्या

  • PySimpleGUI की शुरुआत 2018 में media player prototype के लिए जरूरी GUI बनाने हेतु लिखे गए one-off code से हुई
  • लक्ष्य था कि object-oriented GUI framework के अनुभव के बिना भी Tkinter को अधिक linear और intuitive तरीके से wrap करके तेजी से काम कराया जा सके
  • लेखक ने Python या open source का अनुभव न होते हुए भी इसे GitHub पर डाला और पारंपरिक open source project की जगह startup जैसी सोच के साथ आगे बढ़ाया
  • timeline:
    • जुलाई 2018: Version 1
    • जून 2019: Version 4
    • जनवरी 2020: funding समस्या प्रमुख चिंता बनी और commercialisation का उल्लेख हुआ
    • नवंबर 2020: Udemy course की घोषणा और public help request जोड़ी गई
    • दिसंबर 2021: course launch
    • फरवरी 2024: Version 5 commercial release
    • अप्रैल 2026: Version 6
  • GitHub का Announcements Issue project history दर्ज करने वाले blog की तरह इस्तेमाल हुआ और 1,700 से अधिक entries तक बढ़ गया
  • पढ़ने में आसानी के लिए docs के Announcements 2018-2024 tab में snapshots publish किए गए
  • full-time open source काम ने तुरंत और लगातार financial pressure पैदा किया
  • sponsorships और donations, GitHub Sponsors और Buy Me a Coffee के जरिए, peak पर भी लगभग 150 dollars प्रति माह तक ही पहुंचे
  • 61 lessons और 11.5 hours वाले Udemy course की कमाई शुरुआती दौर में थोड़े समय के लिए लगभग 2,000 dollars प्रति माह तक गई, लेकिन बाद में 100 dollars से नीचे आ गई
  • दोनों तरीकों से project को long-term sustain करने लायक आय नहीं हो सकी

Commercialisation के परिणाम और license अनुभव

  • Version 5 paid product launch कोई अचानक लिया गया फैसला नहीं था; इस पर कई वर्षों तक README और announcements में सार्वजनिक चर्चा होती रही थी
  • 2024 की शुरुआत में अन्य विकल्प खत्म होने के बाद commercial version जारी किया गया
  • लक्ष्य barrier खड़े करना नहीं, बल्कि accessibility बनाए रखना था
  • financial sustainability के मानक पर यह सफल नहीं रहा, लेकिन experience, learning, और relationships के लिहाज से इसे मूल्यवान बताया गया
  • commercialisation के बाद अधिकांश users नहीं खोए गए, और कई companies ने PySimpleGUI का उपयोग जारी रखा
  • समस्या यह थी कि companies को license खरीदने के लिए कैसे प्रेरित किया जाए
  • hobby users और students के लिए free, और companies के लिए paid Hobbyist License चुना गया
  • व्यवहार में अधिकांश users ने खुद को hobby user के रूप में पहचाना
  • tens of thousands corporate users free tier में registered थे, और बड़ी companies में भी सैकड़ों users होने के बावजूद paid licenses बहुत कम होना असामान्य नहीं था
  • लेखक ने कहा कि free option देने के फैसले पर उसे पछतावा नहीं है
  • उसका व्यक्तिगत निष्कर्ष यह है कि Python tools और libraries के free होने की cultural expectation बहुत मजबूत है
  • price या complaints मुख्य समस्या नहीं दिखीं; लोगों ने PySimpleGUI का उपयोग जारी रखा, लेकिन उन्हें payment करने की obligation महसूस नहीं हुई
  • साफ license terms भी हमेशा व्यवहार नहीं बदल सके

वर्तमान license

  • copyright notice है Copyright 2018-2026 PySimpleGUI. All rights reserved.
  • वर्तमान license LGPL3 है

1 टिप्पणियां

 
GN⁺ 2023-12-11
Hacker News की राय
  • काम के सिलसिले में Jira में काम के घंटे लॉग करने पड़ते थे, लेकिन वेबसाइट को लगातार खुला रखना पसंद नहीं था, और जिस issue पर काम कर रहा था उसे ढूंढना, time logging लिंक ढूंढना और comment जोड़ना भी धीमा था
    मुझे एक desktop app चाहिए था जिसमें मुझे assign किए गए issues की सूची और comment/काम के घंटे जोड़ने के buttons हों। Tkinter से इसे अच्छा दिखाने में काफी देर तक जूझता रहा, लेकिन PySimpleGUI मिलने के बाद Jira API hooks जोड़कर जो चाहिए था वह बना सका, और UI development सीखने के लिए यह अच्छा project था

    • Jira इतना आम तौर पर धीमा लगता है कि शायद बहुत से लोग custom tools से उसे bypass करना चाहते हैं
      एक दोस्त ने भी बताया था कि उसने एक workplace में Jira के basic कामों के लिए internal Qt client बनाया था, और जब मुझे भी Jira से काम track करना पड़ा था, तो मैंने https://github.com/go-jira/jira का उपयोग करके कई console scripts से बदलावों का काम संभाला था
    • जैसे ही office में Jira time logging शुरू करने की बात हुई, मैंने नई नौकरी ढूंढनी शुरू कर दी
    • सोच रहा हूं कि इस app का source कहीं public है या नहीं। इस हफ्ते कुछ ऐसा ही बनाने के बारे में सोच रहा हूं, इसलिए अगर किसी मौजूदा app में सिर्फ Jira instance set किया जा सके तो बहुत अच्छा होगा
    • संदेह है कि क्या यह सच में UI development सीखना है। पता नहीं यह आगे किसी ज्यादा कठिन project तक जा सकता है या उसमें expand हो सकता है
  • ऐसे GUI frameworks से सच में उम्मीदें हैं। native desktop experience webview के जोड़-तोड़ से कहीं बेहतर है, और PySimpleGUI का simplified event loop और multi-backend approach सचमुच नया लगता है
    हालांकि हैरानी है कि ऐसे “automatic GUI” ज्यादा क्यों नहीं हैं, जिन्हें सिर्फ data structures और functions दे दें और वे उन्हें manipulate करने के लिए उपयुक्त interface अपने-आप बना दें। panels को vertical/horizontal रखना है या tabs interface या popup में रखना है, यह heuristics से चुना जाए तो CLI के लिए बहुत nested और webapp बनाने के लिए बहुत ज्यादा native features वाली चीजें भी खुल सकती हैं

    • एक दिलचस्प project के रूप में, Gooey कहता है कि वह “लगभग हर Python 3 console program को एक line में GUI app में बदल देता है”
      https://github.com/chriskiehl/Gooey
    • 2011 में function arguments के आधार पर web के लिए automatic form generator बनाया था, और हाल में D language आधारित GUI toolkit में भी ऐसा थोड़ा किया था
      आप struct define करके उसे dialog function को दें, तो struct fields के हिसाब से dialog अपने-आप generate हो सकता है, और user के OK दबाने पर callback call कर सकता है। custom attributes से कौन-सा widget इस्तेमाल होगा यह भी specify कर सकते हैं; जैसे int पर @ControlledBy!VerticalSlider(0, 100) लगाने से number input field की जगह 0~100 slider बन जाता है। menu functions पर भी @menu("Search") Find(string text) { ... } जैसे लगाकर menu और dialog अपने-आप generate किए जा सकते हैं, और हर change event पर callback call करने वाला DataControllerWidget भी है। कुछ साल पहले इस पर related post भी लिखी थी, लेकिन progress बहुत धीमी है: http://dpldocs.info/this-week-in-d/Blog.Posted_2020_11_02.ht...
      यह इतना दिलचस्प है कि इस पर और समय देना चाहता हूं, लेकिन day job में इसकी जरूरत नहीं पड़ती, इसलिए weekend पर coding करने का मन होने पर ही थोड़ा-थोड़ा करता हूं
    • उस description से मेल खाने वाली चीज दशकों पहले Naked Objects नाम से थी। Java side में मेरी दिलचस्पी नहीं थी, इसलिए इस्तेमाल नहीं किया, लेकिन उपयोगी लगती थी
    • Python में TraitsUI एक ठीक-ठाक “automatic UI” था, और आज भी वैसी भूमिका निभाता है
  • examples की aesthetics [0] जैसी लगती है, जैसे 90s से सीधे उठा ली गई हो। prototypes या उन लोगों के लिए internal tools जिन्हें CLI इस्तेमाल नहीं करनी आती, इनके लिए perfect है, लेकिन जब अच्छा दिखने वाला UI चाहिए हो तो क्या किया जाए, यह सोचता हूं
    performance के लिहाज से native UI हमेशा अच्छा होता है, लेकिन मुझे हमेशा लगा है कि इसकी styling web page से मुश्किल है। Python GUI में Flutter या SwiftUI जैसा, बहुत effort लगाए बिना polished दिखने वाले styled components का equivalent क्या है, यह जानना चाहता हूं
    [0] https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/ma...

    • यह skill का मामला हो सकता है, लेकिन मेरे अनुभव में “styled” UI कई software और users के लिए software खराब होने की वजहों में से एक रहा है
      कम से कम operating system द्वारा दिया गया default UI style ऐसा होता है जिसे लोग एक app में सीखकर दूसरे app में ले जा सकते हैं। मैं कोई बेहतरीन UI designer नहीं हूं, इसलिए संभव है कि OS defaults मेरी कल्पना से बेहतर हों। ऊपर से marketing से सुनने में डरावना वाक्य “हमारा software पुराना दिखता है” जुड़ जाए, तो development cost पहले ही असहनीय स्तर तक बढ़ जाती है
    • 90s feel अपने-आप में ठीक है, लेकिन यह 90s operating system look से भी match नहीं करता। checkbox का background गलत है, ऊपर का title label misaligned है, और Exit button की position भी अजीब है, इसलिए कुल मिलाकर यह खराब design वाला UI लगता है
      90s में भी ऐसा software था, लेकिन लोग आम तौर पर जिसे 90s aesthetics कहते हैं, वह यह नहीं है। Windows 95 UI design में बहुत मेहनत लगी थी
    • समझ नहीं आता 90s look में क्या problem है। बहुत लोगों को पसंद भी है
      आजकल के UI में बड़े-बड़े whitespace, button जैसे न दिखने वाले buttons, गायब हो जाने वाले scrollbars और hamburger menus मुझे ज्यादा खराब लगते हैं
    • अगर appearance सबसे पहली priority है, तो webpage को मात देना काफी मुश्किल लगता है
      frontend और backend separation भी default रूप से हो जाता है, और बाद में जरूरत पड़े तो remote access भी संभव है। native app जैसा इस्तेमाल करना हो तो छोटे Tkinter-जैसे GUI में सिर्फ “Open browser UI” button डालना काफी है। अगर run button URL में token डाल दे तो उसी machine के किसी दूसरे user के तौर पर चल रहे daemon से भी protection मिल सकती है, लेकिन असल में ऐसा करते हुए कहीं नहीं देखा
    • समस्या यह है कि Tkinter कम से कम Windows पर सचमुच 90s widgets पर आधारित है। PySimpleGUI theme को SystemDefaultForReal में बदलने पर भी native Windows widgets modern दिखते हैं, लेकिन Tkinter बिल्कुल update नहीं हुआ है, इसलिए अटपटा दिखता है
  • ठीक लग रहा है। हालांकि यह लाइब्रेरी पहले से ही mature है, इसलिए बड़े बदलाव मुश्किल हो सकते हैं, लेकिन list की जगह dictionary इस्तेमाल करना अच्छा होगा। हाल की Python dictionaries insertion order याद रखती हैं
    मैंने पिछली नौकरी में PyQt के ऊपर इससे मिलता-जुलता, कहीं ज़्यादा पतला wrapper बनाया था, और code भी हैरानीजनक रूप से कम था। मुख्य फर्क यह था कि वह properties/signals सेट करने और widgets की nesting को साथ-साथ handle करता था। constructor में properties सेट करने के तरीके की तुलना में, इसका फायदा यह था कि बाद में text बदलने के लिए widget name चाहिए हो तब भी view definition के body में ही properties सेट की जा सकती थीं। setup_view function ही पूरा API था, और simple GUI जल्दी बनाने में काफी सुविधाजनक था। यह लाइब्रेरी भी अच्छा विकल्प लगती है, share करने के लिए धन्यवाद

    • यह बदलाव Python 3.7 में आया था, और अब यह 5 साल से भी पुराना feature है
      https://docs.python.org/3/whatsnew/3.7.html#summary-release-...
    • हाल के GUI frameworks के trend को देखें तो layout और data को अलग करना कहीं ज़्यादा साफ code बनाता है
      data binding framework को संभालने देना बेहतर है। web और desktop दोनों धीरे-धीरे इसी दिशा में जा रहे हैं। widget को सीधे बदलने के बजाय, widget properties को data store से bind करना चाहिए और change होने पर अपने-आप re-render होने देना चाहिए। page के input/output examples कुछ वैसा ही दिखाते हैं। अब कोई भी getElementById() इस्तेमाल नहीं करता
    • GitHub page के मुताबिक, “beginners को समझ आने वाले Python के core data types, यानी list और dictionary, का इस्तेमाल करके window definitions को सरल बनाया गया है”
  • लगता है यह VB6 या Delphi/Lazarus की ease of use के करीब जा रहा है। निश्चित रूप से प्रगति है, और अब बस एक interactive GUI builder हो तो बने हुए forms को #import करके सीधे इस्तेमाल करने जैसी बात हो सकती है
    कुछ साल पहले WxPython और WxFormBuilder को साथ में इस्तेमाल करने की कोशिश में एक project में बहुत समय बर्बाद हुआ था। form में छोटा सा बदलाव करते ही पूरा backend टूट जाता था, और बीच की wiring के लिए मैंने खुद पतला code लिखा था, लेकिन field type बदलते ही वह भी फिर टूट गया। अच्छा है कि यहाँ शायद ऐसा नहीं होगा

  • Python GUI application [1] develop करने वाले के तौर पर, desktop apps में Python इस्तेमाल करते समय सबसे बड़ी समस्या मुझे packaging लगती है
    distributable binaries बनाने वाले मौजूदा tools dependencies कुछ से ज़्यादा होते ही काम करना बंद कर देते हैं या काफी hacky काम की जरूरत पड़ती है। popular packages में भी hidden imports छूटने या अनजानी data files missing होने जैसी कठिन समस्याएँ आती हैं। dynamic module loading भी PyInstaller या cx_freeze जैसे tools से general Python environment के बाहर ले जाने पर कभी-कभी टूट जाती है। पता नहीं क्या किया जा सकता है, लेकिन शायद Python को भी Java के JAR जैसा कोई standalone program packaging standard चाहिए, जो सिर्फ interpreter पर depend करे

    1. https://github.com/FreeLanguageTools/vocabsieve
    • Python में standardised और JAR जैसा zipapp है: https://peps.python.org/pep-0441/
      shiv या PEX जैसे tools से application dependencies शामिल करने वाला zipapp बनाया जा सकता है, लेकिन binary extensions हों तो output अब भी platform-specific रहता है: https://github.com/linkedin/shiv#gotchas
      मैं अपने Python program के users को pipx से install करने की सलाह देता हूँ: https://github.com/pypa/pipx
      target users अगर थोड़ा भी technical हों तो मुझे यह सबसे अच्छा विकल्प लगता है। यह pip install --user के version conflicts और हर app के लिए virtual environment manually बनाने की परेशानी से बचाता है, और कुल मिलाकर अच्छा user experience देता है। pipx को default installation method के रूप में सुझाने पर भी उम्मीद की जा सकती है कि लोग install करने में सफल होंगे। मेरे program में binary dependencies हैं, लेकिन GUI नहीं है
  • निजी तौर पर मुझे CustomTKinter ज्यादा पसंद है। यह काफी अधिक elegant है, Material theme जैसा look देता है, और Windows/Linux/macOS पर system settings के हिसाब से light/dark theme support करता है

  • यह हैरानी की बात है कि rapid application development के क्षेत्र में VB6 ने जो खाली जगह छोड़ी, उसे अब तक कोई चीज़ ठीक से भर नहीं पाई। language खुद बहुत शानदार नहीं थी, लेकिन VB6 की ताकत उसका drag-and-drop GUI builder था

    • जैसा किसी और ने कहा, Lazarus पर विचार किया जा सकता है, और अगर ज़्यादा VB-जैसा अनुभव चाहिए तो Gambas भी दिलचस्प हो सकता है
      https://www.lazarus-ide.org/
      https://gambas.sourceforge.net/en/main.html
    • वही paradigm, जिसमें UI को manually editable file में store किया जाता है
      https://qb64.com/inform.html
    • https://www.lazarus-ide.org/
    • drag-and-drop UI design की वजह से मैंने qtcreator को अपेक्षा से कहीं ज़्यादा लंबे समय तक इस्तेमाल किया
      उपयोगी बात यह है कि layout file को Python script के बगल में रख देने भर से pyqt में इस्तेमाल किया जा सकता है। IDE का Python support अच्छा नहीं है, लेकिन हो सकता है मेरी installation ही खराब हो
    • Xojo असल में VB6 का spiritual successor है
      https://xojo.com/
  • एक ऐसे tool में GUI जोड़ने पर विचार कर रहा हूँ जिसमें काफी अच्छी तरह बना CLI interface है, ताकि desktop Linux न इस्तेमाल करने वाले लोग भी उसे इस्तेमाल कर सकें। PySimpleGUI शायद मेरी जरूरतों के लिए बिल्कुल सही हो सकता है
    https://github.com/hiAndrewQuinn/finstem
    मेरे tool में CSV, TSV, JSON flags अच्छी तरह defined हैं। जानना चाहता हूँ कि क्या किसी के पास किसी मौजूदा, पूरी तरह बने CLI tool को बदले बिना उसके ऊपर GUI बनाने का अनुभव है, और किन मुश्किलों की उम्मीद करनी चाहिए

    • Chess engines एक अच्छा reference case हैं। decision-making वाला हिस्सा CLI होता है, और WinBoard[0] या Arena[1] जैसे GUI से जुड़ता है
      engine और GUI WinBoard या UCI[2] जैसे protocols follow करते हैं, और STDIN/STDOUT के जरिए text commands भेजते-लेते हैं। मुख्य मुश्किलें वही हैं जो multithreading में आती हैं: GUI और CLI एक-दूसरे का इंतजार करते हुए रुक सकते हैं और deadlock बन सकता है। इसलिए responsiveness बनाए रखने के लिए दोनों तरफ input/output को “business logic” से अलग thread में handle करना चाहिए। एक और आम समस्या pipes handling में OS-specific व्यवहार का अलग होना है, यानी buffer flush या Linux/Mac/Windows के बीच API differences का ध्यान रखना पड़ता है
      [0] http://hgm.nubati.net/
      [1] http://www.playwitharena.de/
      [2] https://gist.github.com/DOBRO/2592c6dad754ba67e6dcaec8c90165...
    • उदाहरण के लिए HandBrake देख सकते हैं। यह काफी हद तक ffmpeg के लिए एक चमकदार UI जैसा है
  • असभ्य नहीं लगना चाहता, लेकिन text बहुत ज्यादा है। जहाँ भी text डालने की जगह है, वहाँ लंबे-लंबे वाक्य चले जाते हैं, और ज्यादातर consistent हैं, लेकिन पहले हजार शब्दों में एक भी relevant screenshot नहीं है
    कुछ गड़बड़-सा लगता है। शायद कोई युवा और उत्साही developer है, या इस्तेमाल करने के लिए मनाने की कोशिश में बहुत text डाल दिया है—ऐसा महसूस होता है। README में author का खुद को introduce करने वाला “about me” section तक है। README में कहीं भी नीचे जाकर कुछ paragraphs पढ़ें और फिर अभी जो पढ़ा उसे दोहरा कर देखें, तो यह उदाहरण हो जाएगा

    • हर section का clear title है। अगर कोई section रुचिकर नहीं है, तो थोड़ा scroll कर लें। कोई भी आपको “about me” section पढ़ने के लिए मजबूर नहीं कर रहा
      कुछ लोग “सबसे कम शब्द पढ़कर जितनी जल्दी हो सके कैसे चलाऊँ” वाले रवैये के बजाय, tool के बारे में पढ़ना अपने-आप में पसंद करते हैं। आप किसी और के बनाए tool को मुफ्त में इस्तेमाल कर रहे हैं, इसलिए शिकायत बंद करके उन्हें अपनी पसंद के तरीके से उसे express करने देना बेहतर है
    • “युवा और उत्साही developer” वाला अनुमान गलत है। “About Me” [1] में लिखा है कि उन्होंने 70s से software लिखना शुरू किया था, और अपने career का ज्यादातर हिस्सा Silicon Valley में products बनाने में बिताया
      [1] https://github.com/PySimpleGUI/PySimpleGUI#about-me-
    • बस सरसरी तौर पर देखा। यह investors को attract करने वाला product MVP नहीं है, बल्कि बनाने वाले ने खुद documentation लिखा हुआ एक tool है
      असभ्य नहीं लगना चाहता, लेकिन क्या कहीं ऐसा तो नहीं कि step-by-step summary से spoon-feed न किया जाए तो आपको पढ़ना पड़ेगा—इस बात से ही डर लगता है?
    • मुझे यह काफी असभ्य phrasing लगती है। खासकर इसलिए कि text ज्यादा होने की वजह को सिर्फ दो possibilities में सीमित कर दिया, और दोनों ही बहुत अच्छे नहीं लगते। ऊपर से वे वजहें सही भी नहीं लगतीं
      वही बात “visual project हो तो main description में और screenshots होने चाहिए, ऐसा मुझे लगता है” कहकर भी बताई जा सकती थी, और अपमानजनक अटकलें हटाई जा सकती थीं
    • project का नाम Simple रखना ही शायद समस्या हो सकता है। क्योंकि इससे reader के दिमाग में अपेक्षाओं का एक preconceived notion बैठ जाता है
      अगर project नाम में Smart, Open, Trusted, Secure जैसे शब्द डालते हैं, तो लोग आसानी से कह सकते हैं कि यह उस नाम के ideal पर खरा नहीं उतरता। इसके उलट C या BSD जैसे नामों में कोई opposite word या implication नहीं है, इसलिए यह कहना मुश्किल है कि “C language अपने नाम पर खरी नहीं उतरती”