PyQt 2树和按钮

时间:2014-05-13 15:18:29

标签: python pyqt

伙计们!我有两个QTreeView树和一个QPushButton。我如何理解我点击的树项目?例如,我点击了treeView1中的项目,并获得如下消息: “您在treeView1中选择项目”

def button(self):
    index = self.treeView1.currentIndex()
    node = index.internalPointer()
    if node is not None:
         print("You select item in treeView1 " + node.name())
    else:
         index = self.treeView2.currentIndex()
         node = index.internalPointer()
         print("You select item in treeView2 " + node.name())

它有效,但我认为这是非常糟糕的解决方案.. 我怎么做这个例子呢? 非常感谢! 对不起我的英文:)

1 个答案:

答案 0 :(得分:1)

这很容易。

首先设置两个信号

QtCore.QObject.connect(self.treeView1 , QtCore.SIGNAL("clicked (const QModelIndex&)") , self.clickedTree1)
QtCore.QObject.connect(self.treeView2 , QtCore.SIGNAL("clicked (const QModelIndex&)") , self.clickedTree2)

设置完信号后,您需要定义广告位def clickedTree1(self,index)def clickedTree2 (self,index)

def clickedTree1(self,index):
    node = index.internalPointer()
    print("You select item in treeView1 " + node.name())

def clickedTree2(self,index):
    node = index.internalPointer()
    print("You select item in treeView2 " + node.name())

更新


好的,我再次阅读了这个问题,并且我想要在点击按钮时打印。

from PyQt4 import QtCore, QtGui

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(616, 276)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.verticalLayout = QtGui.QVBoxLayout()
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.treeView = QtGui.QTreeView(self.centralwidget)
        self.treeView.setObjectName(_fromUtf8("treeView"))
        self.horizontalLayout.addWidget(self.treeView)
        self.treeView_2 = QtGui.QTreeView(self.centralwidget)
        self.treeView_2.setObjectName(_fromUtf8("treeView_2"))
        self.horizontalLayout.addWidget(self.treeView_2)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.verticalLayout.addWidget(self.pushButton)
        self.verticalLayout_2.addLayout(self.verticalLayout)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 616, 21))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QObject.connect(self.treeView1 , QtCore.SIGNAL("clicked (const QModelIndex&)") , self.clickedTree1)
        QtCore.QObject.connect(self.treeView2 , QtCore.SIGNAL("clicked (const QModelIndex&)") , self.clickedTree2)
        QtCore.QObject.connect(self.pushButton , QtCore.SIGNAL("clicked()"),self.pushed)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8))

    def clickedTree1(self,index):
        self.node = index.internalPointer()
        self.Tree = 1

    def clickedTree2(self,index):
        self.node = index.internalPointer()
        self.Tree = 2

    def pushed(self):
        print("You select item in treeView{0} ".format(self.Tree) + node.name())