Форум сайта python.su
Пытаюсь сделать парсер XML, научился открывать его с помощью диалога QFileDialog
QtCore.QObject.connect(self.action, QtCore.SIGNAL('triggered()'), self.showDialog) def showDialog(self): fileName = QtGui.QFileDialog.getOpenFileName(None, "Load Data", "/home/", "xml-files (*.xml)") tree = etree.parse(fileName) root = tree.getroot()
Офлайн
# -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui # это не обязательно должно быть главное окно # может быть просто виджет class MainWindow(QtGui.QWidget): def __init__(self): super(MainWindow, self).__init__() self.setAcceptDrops(True) def dragEnterEvent(self, event): event.acceptProposedAction() def dragMoveEvent(self, event): event.acceptProposedAction() def dragLeaveEvent(self, event): event.accept() def dropEvent(self, event): mimeData = event.mimeData() if mimeData.hasUrls(): files = [unicode(url.toLocalFile()) for url in mimeData.urls()] event.acceptProposedAction() print files # можно делать что-то с именами файлов if __name__ == "__main__": app = QtGui.QApplication(sys.argv) mainwindow = MainWindow() mainwindow.resize(300, 300) mainwindow.show() sys.exit(app.exec_())
Офлайн
Спасибо!
Я просто новичек в python, поискать с drag and drop не догадался.
Твой пример выдает ошибку:
Traceback (most recent call last):
File “C:/fin/testing.py”, line 24, in dropEvent
files = unicode(url.toLocalFile()) for url in mimeData.urls()
File “C:/fin/testing.py”, line 24, in <listcomp>
files = unicode(url.toLocalFile ()) for url in mimeData.urls()
NameError: global name ‘unicode’ is not defined
Отредактировано Patrik (Окт. 31, 2012 11:26:18)
Офлайн
NameError: global name ‘unicode’ is not defined
unicode() - встроенная в питон фун-ция, которая преобразует текс в юникод. Ты наверное забыл сверху прописать
import sys, os
Офлайн
Если Python 3.x, то вызов unicode() не нужен
files = [url.toLocalFile() for url in mimeData.urls()]
wizard_masterЭто никак не связано.
Ты наверное забыл сверху прописать
import sys, os
Офлайн
Весь вечер крутил пример любезно предоставленный reclosedev.
Все отлично работает.
Интерфейс моего пассера накидан в qt designer.
Он такого вида:
import sys from PyQt4 import QtCore, QtGui import xml.etree.ElementTree as etree try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s class Ui_MainWindow(object): …..
Офлайн
Похоже, вы не правильно используете файлы сгенерированные qt designer.
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/designer.html
Офлайн
Я делал так, накидал интерфейс в qt designer, далее программой pyuic преобразовал ui в py
После писал все в с регенерированном файле py.
Офлайн
PatrikНеужели надпись
После писал все в с регенерированном файле py.
# WARNING! All changes made in this file will be lost!
# -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui from ui_main_window import Ui_MainWindow class MainWindow(QtGui.QMainWindow, Ui_MainWindow): # или QWidget def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setAcceptDrops(True) self.setupUi(self) ...
Офлайн
Надпись конечно смущает.
Но когда я начинаю из него выносить все что
написал ((( перестает работать, то что работало.
Офлайн