import sys
from PyQt4 import QtCore,QtGui
from Windows.intro_win import Ui_Introduction
from Windows.post_adder_win import Ui_postTool
import win32clipboard
import pyHook
class Intro(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.ui = Ui_Introduction()
self.ui.setupUi(self)
class postTool(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.ui2 = Ui_postTool()
self.ui2.setupUi(self)
def setModPosition(self):
self.ui2.lineEdit_2.setText("something")
print "nomnom"
def OnKeyboardEvent(event):
KeyClicked = event.KeyID
if KeyClicked == 121:
print "Debug from keyboardEvent"
OMD_post.show()
postTool().setModPosition()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
OMD_intro = Intro()
OMD_post = postTool()
OMD_intro.show()
eventkey = pyHook.HookManager()
eventkey.KeyDown = OnKeyboardEvent
eventkey.HookKeyboard()
sys.exit(app.exec_())
它实际上不起作用 - 文本没有改变 - 为什么它不起作用?它不会给我任何错误(但打印打印它应该打印的内容) https://dl.dropbox.com/u/21125662/compilation/_00398.jpg
最佳答案
OnKeyboardEvent
中的
postTool().setModPosition()
会更改新创建 postTool 的 lineEdit 中的文本,但您不会这样做看看吧,因为您没有show()
新的小部件。您可能想要做的是在 OMD_post
上调用 setText
。
尝试用 keyPressEvent 替换 OnKeyBoardEvent
模块级函数postTool
中的函数,或者可以使用 QShortCut。
class postTool(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.ui2 = Ui_postTool()
self.ui2.setupUi(self)
def setModPosition(self):
self.ui2.lineEdit_2.setText("something")
print "nomnom"
def keyPressEvent(event):
if type(event) == QtGui.QKeyEvent:
key = str(event.text()).lower()
if key == 'whatever':
self.setModPosition()
或者,
class postTool(QtGui.QMainWindow):
def __init__(self,parent=None):
... # the existing stuff
QtGui.QShortcut(QtGui.QKeySequence("F10"), self, self.setModPosition)
关于python - setText() 在 Python 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10963791/