setText()在Python中不起作用

2024-10-01 17:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: fromimportselfuiinitdefsyspost
1条回答
网友
1楼 · 发布于 2024-10-01 17:24:10

OnKeyboardEvent中的postTool().setModPosition()更改新创建的post工具的lineEdit中的文本,因为您没有show()新小部件,所以您不会看到它。您可能想做的是在OMD_post上调用setText。在

尝试将OnKeyBoardEvent模块级函数替换为postTool中的keyPressEvent函数,或者使用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()

或者

^{pr2}$

相关问题 更多 >

    热门问题