为基于树的qtDesigner UI系统添加功能

2024-06-16 15:44:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Qt4设计工具设计了这个UI。这是一个树系统。问题是我不能给每个项目单独的功能。单击“安装”时,它应运行myfunc,单击“卸载”时,myfuncUninstall应运行。。因此,我如何才能给功能的项目,分别以树为基础的系统。你知道吗

from PyQt4 import QtCore, QtGui
try:
  _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
  _fromUtf8 = lambda s: s
def myfunc():
  print "Hello Install"  
def myfuncUninstall():
  print "Hello Uninstall"    
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName(_fromUtf8("Form"))
    Form.resize(502, 409)
    self.treeWidget = QtGui.QTreeWidget(Form)
    self.treeWidget.setGeometry(QtCore.QRect(10, 10, 261, 341))
    self.treeWidget.setObjectName(_fromUtf8("treeWidget"))
    item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
    item_1 = QtGui.QTreeWidgetItem(item_0)
    item_1 = QtGui.QTreeWidgetItem(item_0)
    self.lineEdit = QtGui.QLineEdit(Form)
    self.lineEdit.setGeometry(QtCore.QRect(290, 10, 113, 27))
    self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
    self.retranslateUi(Form)
    QtCore.QObject.connect(self.treeWidget, QtCore.SIGNAL(_fromUtf8("itemActivated(QTreeWidgetItem*,int)")), myfunc)
    QtCore.QMetaObject.connectSlotsByName(Form)
  def retranslateUi(self, Form):
    Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
    self.treeWidget.headerItem().setText(0, QtGui.QApplication.translate("Form", "BBB", None, QtGui.QApplication.UnicodeUTF8))
    __sortingEnabled = self.treeWidget.isSortingEnabled()
    self.treeWidget.setSortingEnabled(False)
    self.treeWidget.topLevelItem(0).setText(0, QtGui.QApplication.translate("Form", "Install Manager", None, QtGui.QApplication.UnicodeUTF8))
    self.treeWidget.topLevelItem(0).child(0).setText(0, QtGui.QApplication.translate("Form", "1. Install", None, QtGui.QApplication.UnicodeUTF8))
    self.treeWidget.topLevelItem(0).child(1).setText(0, QtGui.QApplication.translate("Form", "2. UnInstall", None, QtGui.QApplication.UnicodeUTF8))
    self.treeWidget.setSortingEnabled(__sortingEnabled)
if __name__ == "__main__":
  import sys
  app = QtGui.QApplication(sys.argv)
  Form = QtGui.QWidget()
  ui = Ui_Form()
  ui.setupUi(Form)
  Form.show()
  sys.exit(app.exec_())

Tags: selfformnonedefitemtranslatesettextqtgui
1条回答
网友
1楼 · 发布于 2024-06-16 15:44:58

treeWidgetitemActivated信号连接到myfunc

QtCore.QObject.connect(self.treeWidget, QtCore.SIGNAL(_fromUtf8("itemActivated(QTreeWidgetItem*,int)")), myfunc)

这意味着,每次您在树小部件的任何节点上双击,或在任何节点聚焦时按回车键,它都会在控制台中打印“Hello Install”。你知道吗

最好将itemClickedmyfunc方法连接起来,并按如下方式实现myfunc

def myfunc(item, n):
  # print "Hello Install" , item, n
  t=str(item.text(n)).lower()
  if t == '2. uninstall':
    print '     uninstalling'
  elif t == '1. install':
    print '+++++++installing'

相关问题 更多 >