Форум сайта python.su
Сделал мини пример:
первый файл то, что с генерировал pyuic4
название файла ui_main_window.py
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'usr.ui' # # Created: Fri Oct 26 16:44:10 2012 # by: PyQt4 UI code generator 4.9.5 # # WARNING! All changes made in this file will be lost! 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): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(1154, 883) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
# -*- 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) 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 = [url.toLocalFile() for url in mimeData.urls()] event.acceptProposedAction() print(files) # можно делать что-то с именами файлов if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
Офлайн
if __name__ == "__main__": app = QtGui.QApplication(sys.argv) window = MainWindow() # !!! window.show() # !!! sys.exit(app.exec_())
Офлайн
Спасибо теперь заработало.
Получился такой код, мня немного смущает моя связка открытия файла диалогом и при перетаскивание файла.
Есть еще такой вопрос будет ли открываться с этим кодом xml файл если его ассоциировать или навести на выполняемый модуль ???
# -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui import xml.etree.ElementTree as etree from ui_main_window Ui_MainWindow class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setAcceptDrops(True) self.setupUi(self) QtCore.QObject.connect(self.action_2, QtCore.SIGNAL('triggered()'),QtGui.qApp, QtCore.SLOT('quit()')) QtCore.QObject.connect(self.action, QtCore.SIGNAL('triggered()'), self.showDialog) 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(): file = [url.toLocalFile() for url in mimeData.urls()] event.acceptProposedAction() global fileName fileName = file[0] self.showfile() def showDialog(self): global fileName fileName = QtGui.QFileDialog.getOpenFileName(None, "Load Data", "/home/", "xml-files (*.xml)") self.showfile() def showfile(self): tree = etree.parse(fileName) root = tree.getroot() #... тут xml раскидывается по таблице if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())
Офлайн
PatrikДа, вместо глобальных переменных лучше использовать функции с параметрами или атрибуты экземпляра
мня немного смущает моя связка открытия файла диалогом и при перетаскивание файла.
class MainWindow(...): def showDialog(self): filename = .... if filename: self.showfile(filename) def showfile(self, filename): tree = etree.parse(filename) ...
class MainWindow(...): def __init__(...): ... self.filename = "" def showDialog(self): filename = .... if filename: self.filename = filename def showfile(self): tree = etree.parse(self.filename) ...
PatrikПопробуйте, вопрос то в чем?
Есть еще такой вопрос будет ли открываться с этим кодом xml файл если его ассоциировать или навести на выполняемый модуль ???
Офлайн
Проверил, к сожалению, если перетащить xml файл на test.py, то он в нем не открывается.
И ассоциация так же не работает. (((
Офлайн