2
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

4

1 に答える 1

1

postTool().setModPosition()inは、新しく作成されOnKeyboardEventた postTool の lineEdit のテキストを変更します。これは、新しいウィジェットがないため表示されません。おそらくやりたいことは、 を呼び出すことです。show()setTextOMD_post

OnKeyBoardEventモジュール レベルの関数を のkeyPressEvent関数に置き換える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)
于 2012-06-10T11:45:21.143 に答える