Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ida Pro和PyQt简单按钮连接_Qt_Plugins_Ida - Fatal编程技术网

Ida Pro和PyQt简单按钮连接

Ida Pro和PyQt简单按钮连接,qt,plugins,ida,Qt,Plugins,Ida,在Ida Pro中,如何使用脚本和PyQT连接按钮。 此脚本将显示两个按钮。 我的剧本 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

在Ida Pro中,如何使用脚本和PyQT连接按钮。 此脚本将显示两个按钮。 我的剧本

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")
通常情况下,我会这样做,以调用按钮

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

def hello():
    print "hello"
但似乎不是setText就是clicked.connect在Ida内部不起作用。 另外,看起来我不能通过ida pro调用QApplication,因为ida本身就是一个应用程序,如果调用了它,就会出现frezzes

你知道怎么做按钮吗?
关于

您必须删除应用程序执行以使所有工作正常,并将Qapplication更改为Qwidget

这是我的hello脚本和一个小型论坛:) 从*.py或脚本命令加载ida 确保有可能进行sip和Qt安装 这样你就可以设计出更快更丰富的插件。 如果你看到我甚至不导入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()