我使用getOpenFileNames选择几个文件并将它们放入QListWidget中。我还设法通过双击一个文件名为title的项目打开一个窗口。但是,如果我单击另一个项目,它会关闭上一个窗口。在
如何在不关闭其他项目的情况下为单击的每个项目打开一个窗口?在
目的是对QListWidget中的每个数据文件执行数学运算,我希望在屏幕上同时显示每个数据集,然后保存修改后的数据。在
from PyQt4 import QtCore, QtGui
from dataGet.GetVar import Get
from datapath import *
import sys
class Widget(QtGui.QWidget):
def __init__(self, item, parent = None):
super(Widget, self).__init__(parent)
horiz = 600
vert = 600
self.setGeometry(self.width()/2, self.height()/2,horiz,vert)
self.setWindowTitle(item)
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow,self).__init__(parent)
self._setupActions()
self._setupList()
self._setupUi()
def _addFiles(self):
files = QtGui.QFileDialog.getOpenFileNames(self,"Open File", dirpath,"txt Files (*.txt)")
self.stringlist = []
for string in files:
self.stringlist.append(string)
self.flightlist.addItems(self.stringlist)
self.flightlist.itemDoubleClicked.connect(self._openwidgets)
def _getData(self):
#get variables from file
self._addFiles
var = Get(self._addFiles,'Ozo').Var()
def _openwidgets(self):
item = self.flightlist.currentItem().text()
self.plotwidget = Widget(item)
self.plotwidget.show()
def _setupActions(self):
self.exitAct = QtGui.QAction(QtGui.QIcon(':/images/exit.png'),"E&xit", self, shortcut="Ctrl+Q",
statusTip="Exit", triggered=self.close)
self.addFilesAct = QtGui.QAction(QtGui.QIcon(':/images/open.png'),"Add &Files", self, shortcut=QtGui.QKeySequence.Open,
statusTip="add files", triggered=self._addFiles)
def _setupList(self):
#Build the flightlist selection
self.flightlist = QtGui.QListWidget(self)
def _setupUi(self):
# Window size
horiz = 500
vert = 500
self.setGeometry(self.width()/2, self.height()/2,horiz,vert)
self.setWindowTitle("try-1.0")
#MenuBar
self.FileMenu = self.menuBar().addMenu("&File")
self.FileMenu.addAction(self.addFilesAct)
self.FileMenu.addSeparator();
self.FileMenu.addAction(self.exitAct)
#FileList
mainLayout = QtGui.QVBoxLayout()
mainLayout.addWidget(self.flightlist)
widget = QtGui.QWidget()
widget.setLayout(mainLayout)
self.setCentralWidget(widget)
def main():
app = QtGui.QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在
_openwidgets(self)
中,您将新创建的widget的对象指定为self.plotwidget
,当您创建另一个widget时,它的对象存储在同一个变量中,先前创建的对象丢失了它的引用,因此该窗口被系统关闭。(只要至少有一个变量包含其对象,窗口将保持打开状态)如果要打开所有窗口,请尝试将其对象保存在
list
中,如下所示:注意:别忘了在您的
__init__()
中声明self.plotwidgets
为list
相关问题 更多 >
编程相关推荐