2014-06-30 1 views
0

comment connecter les boutons, dans un Ida Pro en utilisant un script et PyQT. ce script apporte deux boutons. mon script.Les boutons simples Ida Pro et PyQt se connectent

from idaapi import PluginForm 
from PyQt4 import QtCore, QtGui 
from PyQt4.QtGui import QWidget 
from PyQt4.QtGui import QPushButton 
import sip 

class MyPluginFormClass(PluginForm): 
    def OnCreate(self, form): 
     """ 
     Called when the plugin form is created 
     """ 
     # Get parent widget 
     self.parent = self.FormToPyQtWidget(form) 
     self.PopulateForm() 

    def PopulateForm(self): 

     # Create layout 

     layout = QtGui.QHBoxLayout() 
     btn1 = QtGui.QPushButton('world') 
     btn2 = QtGui.QPushButton('hello') 
     layout.addWidget(btn1) 
     layout.addWidget(btn2) 

     self.parent.setLayout(layout) 

    def OnClose(self, form): 
     """ 
     Called when the plugin form is closed 
     """ 
     pass 

plg = MyPluginFormClass() 
plg.Show("Buttons") 

normalement je voudrais faire comme cela pour appeler les boutons.

btn1 = QtGui.QPushButton() 
btn1.setText("Hello") 
btn1.clicked.connect(self.hello) 

def hello(): 
    print "hello" 

Mais apparemment setText ou clicked.connect ne fonctionnent pas dans Ida. aussi il semble que je ne peux pas appeler QAplication via ida pro, puisque ida lui-même est une application et frezzes si appelé.

Une idée de comment faire fonctionner les boutons? Cordialement

Répondre

1

Vous devez supprimer l'exécution de l'application pour que tout fonctionne et changer Qapplication à Qwidget.

voici mon script bonjour avec un petit mini-forum :) charge dans ida soit de * .py ou de commande de script être sûr d'avoir sip et Qt instal proberly De cette façon, vous pouvez disign plugins doivent plus rapide et plus riche . et si vous voyez je ne même pas importer idaapi

# -*- coding: utf-8 -*- 
#Created by michael 



from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

class Ui_TabWidget(object): 
    def setupUi(self, TabWidget): 
     TabWidget.setObjectName(_fromUtf8("TabWidget")) 
     TabWidget.resize(764, 385) 
     self.tab = QtGui.QWidget() 
     self.tab.setObjectName(_fromUtf8("tab")) 
     self.btn_hello = QtGui.QPushButton(self.tab) 
     self.btn_hello.setGeometry(QtCore.QRect(30, 30, 75, 23)) 
     self.btn_hello.setObjectName(_fromUtf8("btn_hello")) 
     self.btn_idaaaap = QtGui.QPushButton(self.tab) 
     self.btn_idaaaap.setGeometry(QtCore.QRect(30, 90, 75, 23)) 
     self.btn_idaaaap.setObjectName(_fromUtf8("btn_idaaaap")) 
     TabWidget.addTab(self.tab, _fromUtf8("")) 
     self.tab1 = QtGui.QWidget() 
     self.tab1.setObjectName(_fromUtf8("tab1")) 
     self.verticalLayout = QtGui.QVBoxLayout(self.tab1) 
     self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) 
     self.webView = QtWebKit.QWebView(self.tab1) 
     self.webView.setUrl(QtCore.QUrl(_fromUtf8("http://stackoverflow.com/questions/24494412/ida-pro-and-pyqt-simple-buttons-connect/"))) 
     self.webView.setObjectName(_fromUtf8("webView")) 
     self.verticalLayout.addWidget(self.webView) 
     TabWidget.addTab(self.tab1, _fromUtf8("")) 

     self.retranslateUi(TabWidget) 
     TabWidget.setCurrentIndex(1) 
     QtCore.QMetaObject.connectSlotsByName(TabWidget) 

    def retranslateUi(self, TabWidget): 
     TabWidget.setWindowTitle(_translate("TabWidget", "TabWidget", None)) 
     self.btn_hello.setText(_translate("TabWidget", "Hello World", None)) 
     self.btn_idaaaap.setText(_translate("TabWidget", "Help idaapi", None)) 
     TabWidget.setTabText(TabWidget.indexOf(self.tab), _translate("TabWidget", "test signal", None)) 
     TabWidget.setTabText(TabWidget.indexOf(self.tab1), _translate("TabWidget", "stackoverflow Forum", None)) 
     self.btn_hello.clicked.connect(self.Hello) 
     self.btn_idaaaap.clicked.connect(self.Help) 


    def Hello(self): 
     print "what the heck how did i get in here" 

    def Help(self): 
     help("idaapi") 



from PyQt4 import QtWebKit 

if __name__ == "__main__": 
    import sys 
    app = QtGui.QWidget() 
    TabWidget = QtGui.QTabWidget() 
    ui = Ui_TabWidget() 
    ui.setupUi(TabWidget) 
    TabWidget.show()