ファイルのドラッグ&ドロップ
- None is None is None: PyQtでファイルのドラッグ&ドロップ (http://d.hatena.ne.jp/doloopwhile/20100108/1275174371)
を参考に。
import sys from PyQt4.QtGui import * class MainWidget(QWidget): def __init__(self, parent=None): super(MainWidget, self).__init__(parent) self.setWindowTitle("D&D") self.resize(360, 240) self.setAcceptDrops(True) def dragEnterEvent(self, event): if event.mimeData().hasUrls(): event.accept() else: event.ignore() def dropEvent(self, event): files = [unicode(u.toLocalFile()) for u in event.mimeData().urls()] for f in files: print f app = QApplication(sys.argv) w = MainWidget() w.show() exit(app.exec_())
タブ
import sys from PyQt4 import QtGui class TabWidget(QtGui.QTabWidget): def __init__(self, parent=None): super (TabWidget, self).__init__(parent) self.setTabsClosable(True) self.tabCloseRequested.connect(self.removeTab) self.addTab(QtGui.QLabel('1'), 'Tab1') self.addTab(QtGui.QLabel('2'), 'Tab2') self.addTab(QtGui.QLabel('3'), 'Tab3') def tabInserted(self, index): print 'tab inserted' def tabRemoved(self, index): print 'tab removed' app = QtGui.QApplication(sys.argv) tab = TabWidget() tab.resize(400, 300) tab.show() sys.exit(app.exec_())
ツリー
ツリーには、QTreeViewを使う。モデルは、QStandardItemModelとQAbstractItemModelの2つがある。とりあえず、簡単な前者の方を使用する。
import sys from PyQt4 import QtCore, QtGui class TreeView(QtGui.QTreeView): def __init__(self, parent=None): super(TreeView, self).__init__(parent) model = QtGui.QStandardItemModel() item = QtGui.QStandardItem('Model') item.setEditable(False) child = QtGui.QStandardItem('Inst-1') child.setEditable(False) item.appendRow(child) item2 = child for i in range(5): child = QtGui.QStandardItem('part-'+str(i+1)) child.setEditable(False) item2.appendRow(child) model.setItem(0, 0, item) model.setHorizontalHeaderItem(0, QtGui.QStandardItem('Model Tree')) self.setModel(model) class MyWidget(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) tree = TreeView(self) self.setCentralWidget(tree) if __name__=="__main__": app = QtGui.QApplication(sys.argv) widget = MyWidget() widget.show() sys.exit(app.exec_())