1
我试图让keypressevent工作,下面的代码KeypressEvent不能正常工作,如何纠正它?
import sys,
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(QtGui.QWidget):
def __init__(self):
super(Ui_MainWindow, self).__init__()
def keyPressEvent(self, event):
print 'a'
def setupUi(self, MainWindow):
MainWindow.setObjectName(("MainWindow"))
MainWindow.resize(371, 345)
MainWindow.setMaximumSize(QtCore.QSize(401, 600))
MainWindow.setWindowIcon(QtGui.QIcon('icons/icon.png'))
screen = QtGui.QDesktopWidget().screenGeometry()
mysize = MainWindow.geometry()
hpos = (screen.width() - mysize.width())/2
vpos = (screen.height() - mysize.height())/2
MainWindow.move(hpos, vpos)
#some GUI
MainWindow.setCentralWidget(self.centralwidget)
cd=MainWindow.centralWidget()
cd.setFocusPolicy(QtCore.Qt.StrongFocus)
cd.setFocus()
self.actionHardware = QtGui.QAction(MainWindow)
self.actionHardware.setObjectName(("actionHardware"))
self.retranslateUi(MainWindow)
#COnnect odes
def retranslateUi(self, MainWindow):
#sime button text codes
if __name__=="__main__" :
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
使用QTDesigner的代码被部分产生。我注意到,通过ui.show()代替Mainwindow.show()使keypressevent但没有表现出任何按钮的成本我在主窗口中央物件
您的代码对我的作品作为我改线'MainWindow.setCentralWidget(self.centralwidget)''来MainWindow.setCentralWidget(个体经营)' 。 – 2011-06-11 11:03:39
这会导致我在self.centralwidget中添加的所有按钮被隐藏 – Arvindsa 2011-06-11 12:26:10
您的'Ui_MainWindow'没有centralwidget属性,所以您写的代码给出了一个'AttributeError'。我在想这会帮助重构你的代码,以便MainWindow设置代码在你的'Ui_MainWindow'类之外。 'Ui_MainWindow'是'MainWindow'的子部件。它并不真正符合MainWindow的设置代码的面向对象的最佳实践。你写的方式仍然有效,但我想知道这是不是混淆的根源。 – 2011-06-11 13:04:47