python - setText() 在 Python 中不起作用

标签 python input label pyqt4 settext

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/

相关文章:

java - 如何在JFreeChart的气泡图上正确显示标签?

python - 在 python 中做散点图时标记数据

python - 对于打印谷歌搜索的结果,Beautiful Soup 没有提供任何结果,尽管存在值(value)

python - sql 查询的 sql 语法错误

javascript - 在 Angular/Django SPA 中存储 ng-templates 的最佳位置是什么

java - 如何将矩阵保存在文本文件中

python - Scrapy 重复结果

c++ - C/C++ 的轻量级 OBJ 网格文件加载器?

javascript - 从 HTML 文本到 JavaScript 获取整数

用于 logit 刻度轴标签的 Python matplotlib ValueError