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