انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: پایتون:نمایش خروجی ترمینال در برنامه (GUI)  (دفعات بازدید: 1634 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
من می خوام که خروجی یک فایل BASH رو توی برنامه ام نشون بدم.
من با پایتون اصلا آشنایی ندارم.
بنابه دلایلی من از tkinter برای ساخت GUI استفاده می کنم.
من از python3 استفاده می کنم.
توی جست و جو هایی که انجام دادم با Popen و Text widget باید این کار رو انجام بدم
کدی رو که نوشتم اینطوریه:
text = Text(root)
text.config(stat="normal")
    p = subprocess.Popen('/script-foo.sh',stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    output , err= p.communicate()
    text.insert("end", output)
    text.config(stat="disable")
این کد کار می کنه ولی برنامه تا زمانی که این اسکریپت فعال هست به هیچی جواب نمی ده.ومشکل دیگه اش اینکه صبر می کنه و یک دفعه ای همه ی خروجی رو چاپ می کنه حالا من یک روش بهتر می خوام که بتونه به طور زنده تر خروجی رو نشون بده.
اسکریپت ام خروجی یک برنامه را مانیتور می کنه پس خروجی خیلی زیاد هست.
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره

آفلاین احمد حمزه ئی

  • Jr. Member
  • *
  • ارسال: 66
  • جنسیت : پسر
    • Github
پاسخ : پایتون:نمایش خروجی ترمینال در برنامه (GUI)
« پاسخ #1 : 09 شهریور 1394، 10:28 ب‌ظ »
سوال مشابه شما پرسیده شده، پاسخ آخری رو تست کنید.

آفلاین احمد حمزه ئی

  • Jr. Member
  • *
  • ارسال: 66
  • جنسیت : پسر
    • Github
پاسخ : پایتون:نمایش خروجی ترمینال در برنامه (GUI)
« پاسخ #2 : 18 شهریور 1394، 02:32 ق‌ظ »
یکم ساده تر فقط دستور مورد نظر رو به جای ping جایگزین کنید.
import threading
import subprocess
from tkinter import Tk
from tkinter.scrolledtext import ScrolledText

def run_process():
cmd = "ping www.ubuntu.ir"
process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

while process.poll() is None:
for line in process.stdout:
text.config(stat="normal")
text.insert("end", line)
text.see("end")
text.config(stat="disable")

root = Tk()
root.title("Ping")

text = ScrolledText(root)
text.pack(expand=True, fill="both")

thread = threading.Thread(target=run_process)
thread.setDaemon(True)
thread.start()

root.mainloop()
« آخرین ویرایش: 18 شهریور 1394، 01:21 ب‌ظ توسط احمد حمزه ئی »

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
پاسخ : پایتون:نمایش خروجی ترمینال در برنامه (GUI)
« پاسخ #3 : 19 شهریور 1394، 07:31 ب‌ظ »
سلام
آره اینطوری خیلی بهتر شد.
 من از اون روز ها اسکریپت ام رو با xterm اجرا می کردم اینطوری خروجی «زنده» می شد!
ممنون
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره