WX بيثون (بطاقة الثعبان) الناتج تسجيل فرعي أو جانبي للنافذة

StackOverflow https://stackoverflow.com/questions/1200610

  •  05-07-2019
  •  | 
  •  

سؤال

وهناك مماثلة <لأ href = "الشبكي: / /stackoverflow.com/questions/865082/python-plugging-wx-py-shell-shell-into-a-separate-process">questions إلى هذا واحد، ولكن أود أن أرى إجابة أوضح. أنا بناء واجهة المستخدم الرسومية بسيطة مع PythonCard للالتفاف على عملية سطر الأوامر. على وجه التحديد، هو مجمع لسلسلة من المهام ANT وعمليات أخرى مخصصة لذلك غير المشروعات الإنمائية، يمكن استخدامه.

وأود أن إعادة توجيه إخراج فرعي أو جانبي لناحية النص في الإطار. يبدو أن طريقة للقيام بذلك هو استخدام subprocess.Popen(command, stdout=subprocess.PIPE) وتحميل الإخراج إلى متغير.

والسؤال هو كيف أعيش تحديث الإطار مع إخراج فرعي أو جانبي؟ ومن شأن أي تلميحات سيكون موضع ترحيب

والشكر

هل كانت مفيدة؟

المحلول

وفقط عن كل فرعي أو جانبي يمكنك لف وعازلة انتاجها إلا إذا كنت تدير لخداع ذلك بالاعتقاد انها مرتبطة في الواقع إلى محطة - وفرعي أو جانبي لا تستطيع أن تفعل ذلك. بدلا من ذلك، ننظر إلى pexpect (ويعمل بشكل جيد على كل منصة تسمح لديك pseudoterminal، أي كل منصة باستثناء مايكروسوفت ويندوز، ويندوز كنت قد تحاول wexpect لكن ليست لدي خبرة مع هذا الأخير).

وهذه الوحدات تعطيك ناتج فرعي أو جانبي في أقرب وقت كما انها إنتاجه، والسعي لخداع وحدة في إنتاج هذا الانتاج في اسرع وقت ممكن ودون التخزين المؤقت، ولذلك ينبغي أن تجعل من السهل بالنسبة لك لتلقي هذا الانتاج في الوقت الحقيقي، وإلحاقه حقل النص الذي تريد أن تبقي التحديث.

نصائح أخرى

وكنت تبحث عن حل لهذا أيضا. اتضح الحل بسيط بشكل ملحوظ:

بروك = subprocess.Popen ( "أيا كان برنامج" كود] = "بدء التشغيل دير"، قذيفة = صحيح،     المعياري = subprocess.PIPE، ستدير = subprocess.STDOUT)
احيانا صحيح:
    النص = proc.stdout.readline ()
    إن لم يكن النص: استراحة
    النص = txt.replace ( "\ ص \ ن"، "\ ن"). محل ( "\ ص \ ن"، "\ ن"). استبدال ( "\\"، "\")
    self.components.taStdout.appendText (النص)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top