Ida Pro和PyQt简单按钮连接
在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
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()