Gua*_*l11 6 python qt pyqt pyqt4
我正在尝试使用PyQt4构建GUI并使用箭头键控制某些操作.然而,我没有得到击键.
它必须是一个简单的问题,但我是新手.所以任何帮助将不胜感激.谢谢!
import sys
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(910, 500)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 240, 22))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
def keyPressEvent(self, event):
key = event.key()
print(key)
if key == QtCore.Qt.Key_Left:
print('Left Arrow Pressed')
if __name__=='__main__':
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
keyPressEvent
应该重新实现QWidget
.在这种情况下,是子类QWidget
.
你不应该把它放在一个ui类中.
class MyWindow(QtGui.QMainWindow):
def keyPressEvent(...
...
if __name__=='__main__':
...
window=MyWindow()
...
sys.exit(app.exec_()) # and don't forget to run the mainloop
Run Code Online (Sandbox Code Playgroud)
我遇到了类似的问题,但我需要不更改从 .ui 文件生成的 python 脚本的结构。
因此,一个简单的方法是在 def setupUI 中添加以下内容
MainWindow.keyPressEvent = self.newOnkeyPressEvent
Run Code Online (Sandbox Code Playgroud)
然后在 Ui_MainWindow 类中创建自己的按键函数
def newOnkeyPressEvent(self,e):
if e.key() == QtCore.Qt.Key_Escape:
print "User has pushed escape"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7811 次 |
最近记录: |