أكثر

يظل QFileDialog مفتوحًا بعد إجراء التحديد


لقد قمت بإنشاء ملحق QGIS لاستيراد ملف قيم مفصولة بعلامات تبويب ، باستخدام:

filename = QFileDialog.getOpenFileName (self.dlg، "تحديد ملف للاستيراد"، المسار، '*. *') uri = "file: ///" + filename + "؟" + "delimiter =٪ s & xField =٪ s & yField =٪ s "٪ ("  t "،" Set Grid Easting "،" Set Grid Northing ") vlayer = QgsVectorLayer (uri،" SpreadTests "،" delimitedtext ") QgsMapLayerRegistry.instance (). addMapLayer (vlayer)

إنه يعمل كما هو متوقع فيما عدا أن مربع الحوار لتحديد الملف يظل مفتوحًا بعد إجراء التحديد. هل هناك شيء ما أفعله خطأ؟ أو أي شيء آخر أريد إضافته؟


أنت تقوم بخلط كود وظيفة الفتحة مع الكود الضروري للحصول على نتيجة. هذه هي المشكلة.

على سبيل المثال ، قمت بإنشاء مكون إضافي تعسفي واحد لـ "فتح الملفات". الرمز المقطوع التالي ، في__فيه__الطريقة ، هي أن يتصل الزر بالفتحة حيث يوجد ملف QFileDialog:

... def __init __ (self، iface): "" "المُنشئ ... #QFileDialog للملف المفتوح self.dlg.lineEdit.clear () self.dlg.pushButton.clicked.connect (self.select_open_file) ...

للاصطلاح ، يتم وضع وظيفة الفتحة قبل طريقة التشغيل:

... def select_open_file (self): filename = QFileDialog.getOpenFileName (self.dlg، "حدد ملفًا للاستيراد"، ""، '*. *') self.dlg.lineEdit.setText (اسم الملف) def run (self): " "" طريقة التشغيل التي تؤدي جميع الأعمال الحقيقية "" "...

إذا كانت النتيجة:

... إذا كانت النتيجة: # افعل شيئًا مفيدًا هنا - احذف السطر الذي يحتوي على كلمة المرور و # استبدل الكود. filename = self.dlg.lineEdit.text () اسم ملف الطباعة

"الشيء المفيد هنا" هو الطباعة open_file ولكن ، في حالتك ، عليك وضع الشفرة.

uri = "file: ///" + filename + "؟" + "delimiter =٪ s & xField =٪ s & yField =٪ s"٪ (" t"، "Set Grid Easting"، "Set Grid Northing") vlayer = QgsVectorLayer ( uri ، "SpreadTests" ، "نص محدد") QgsMapLayerRegistry.instance (). addMapLayer (vlayer)

إنه يعمل بالنسبة لي كما ترون في الصور التالية:

اختيار ملف الإدخال:

بعد النقر فوق "فتح" ، فإن ملف QFileDialog تم إغلاقه و طريق من ملف الشكل إلى QLineEdit:

بعد النقر فوق "موافق" ، اسم اسم الملف تمت طباعته في وحدة تحكم بايثون.


شاهد الفيديو: QT C++ GUI Tutorial 24- How to use QFileDialog (شهر اكتوبر 2021).