2012-06-09 72 views
1
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.jpgsetText()實際上並不工作Python

+0

它看起來並不像你調用'setModPosition()' –

+0

是啊,我也通過onkeyboardevent,它打印調試 「nomnom」,我忘記提及。 –

+0

啊,我沒有看到。你是否檢查過其他插槽是否有效,比如'setMaxLength()'或者'selectAll()'? –

回答

1

OnKeyboardEventpostTool().setModPosition()改變一個新創建 postTool,的lineEdit文本,你不會看到,因爲你不show()新的小部件。您可能想要做的是致電setTextOMD_post

嘗試用postTool中的keyPressEvent函數替換OnKeyBoardEvent模塊級功能,或者使用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) 
+0

問題是,當我使用QT的關鍵事件,它當我沒有選擇窗口(我的意思是如果我在其他程序中使用密鑰)時不起作用,當我單擊F10(aka keyboardevent)時顯示窗口小部件,然後它調用更改postTool內部的文本() –

+0

@Marcin:正確。你試過把postTool()。setModPosition()改成OMD_post.setModPosition()嗎?它看起來像我'OMD_post'不應該在'OnKeyBoardEvent'的範圍內,但是因爲你已經在上面的行中使用了'OMD_post' .. – Junuxx

+0

/我笨,/我笨(約9000次之後愚蠢的),它改變後OMD_post謝謝,但我真的不知道爲什麼它不工作時,我沒有使用OMD_post(這是從postToool調試方法[調試工作]) –

相關問題