كيف أقوم بإغلاق شريط التقدم هذا عند الانتهاء

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

  •  06-09-2019
  •  | 
  •  

سؤال

أنا عادة اكتب فرق الثعبان للقيام بمهام التحويل بالنسبة لي وكلما أكتب واحدة تستغرق بعض الوقت وأي استخدام شريط التقدم الصغير هذا للتحقق منه

import sys
import time
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
barra = QtGui.QProgressBar()
barra.show()
barra.setMinimum(0)
barra.setMaximum(10)
for a in range(10):
    time.sleep(1)
    barra.setValue(a)
app.exec_()

لدي 2 أسئلة:

كيف أقوم بإغلاقها عند إغلاقها عندما تصل إلى 100٪ (يبقى مفتوحا وإذا قمت بإغلاق قذيفة Python قبل النقر فوق الزر X، فأنت تعطله.)

أيضا، عندما يفقد وتستعيد التركيز، فإنه يتوقف الطلاء بشكل صحيح. ستستمر العملية في الانتهاء ولكن مساحة شريط التقدم هي كلها بيضاء. كيف يمكنني التعامل مع هذا؟

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

المحلول

حسنا، لأنك تحدد كحد أقصى إلى 10، يجب ألا يصل شريط التقدم إلى 100٪

for a in range(10):
  time.sleep(1)
  barra.setValue(a)

سوف تشديد فقط ما يصل إلى 9.

أشرطة التقدم لا تغلق تلقائيا. سوف تضطر إلى الاتصال

barra.hide()

بعد حلقة الخاص بك.

بالنسبة لمشكلة الطلاء، فمن المحتمل أن يكون البرنامج النصي الذي قمت بهذا البرنامج النصي موجود في نفس الخيط مثل شريط التقدم. لذلك عند التبديل بعيدا، يتم تأخير أحداث الطلاء من خلال المعالجة الفعلية للسيناريو الأم. يمكنك إما تعيين مؤقت للاتصال بشكل دوري. يوصى باستخدام "Barra" (تحديث () على إعادة رسم ()) أو تريد أن تعمل رمز المعالجة الرئيسي الخاص بك في Qyrad، وهو متوفر أيضا في رمز PYQT، ولكن هذا سيتطلب بعض القراءة من جانبك :)

DOC هو ل QT، لكنه ينطبق على PYQT أيضا:

https://doc.qt.io/qt-4.8/threads.html.

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