当前位置: 首页 > 面试题库 >

QLineEdit文本更改时(以编程方式)进行操作

商璞
2023-03-14
问题内容

我用QLineEdit编写了以下代码片段,可以通过按“添加文本”按钮进行编辑。

import sys
import os
from PyQt4 import QtGui
from PyQt4 import *

class SmallGUI(QtGui.QMainWindow):
    def __init__(self):
        super(SmallGUI,self).__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300,300,300,300)
        self.setWindowTitle('Sample')

        #One input
        self.MyInput = QtGui.QLineEdit(self)
        self.MyInput.setGeometry(88,25,110,20)
        ###############

        QtCore.QObject.connect(self.MyInput,QtCore.SIGNAL("textChanged(bool)"),self.doSomething)

        #Add Text
        self.MyButton = QtGui.QPushButton(self)
        self.MyButton.setGeometry(QtCore.QRect(88,65,110,20))
        self.MyButton.setText('Add Text')
        ###############

        QtCore.QObject.connect(self.MyButton,QtCore.SIGNAL("clicked(bool)"),self.addText)

        self.show()

    def addText(self):
        self.MyInput.setText('write something')

    def doSomething(self):
        print "I'm doing something"

def main():
    app = QtGui.QApplication(sys.argv)
    sampleForm = SmallGUI()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

我想做的是在QLineEdit的文本以编程方式更改时执行一个动作,即通过单击“添加文本”按钮,执行以下操作:

QtCore.QObject.connect(self.MyInput,QtCore.SIGNAL("textChanged(bool)"),self.doSomething)

我使用信号“
textChanged”的原因与类文档所说的有关,即“当通过编程方式更改文本(例如,通过调用setText()时)也会发出此信号”。

但是,这不起作用,因为未执行print语句。有人可以帮我吗?


问题答案:

问题是,该信号是 不是 textChanged(bool)因为它需要一个字符串参数,因此它或许应该蜜蜂:textChanged(str)

为了避免这种错误,您应该使用新型语法来连接信号:

self.MyInput.textChanged.connect(self.doSomething)
# or:
self.MyInput.textChanged[str].connect(self.doSomething)

此语法具有以下优点:

  • 比较清楚
  • 它不那么冗长,更易读
  • 它提供了更多的错误检查,因为如果信号不存在,则会引发错误。使用旧的语法不会引发错误,但是信号也不会连接,结果就是您所看到的行为。


 类似资料:
  • 这里有个简单的问题。我有一个UIButton,currencySelector,我想通过编程更改文本。以下是我所拥有的: Xcode给了我一个错误“预期声明”。我做错了什么?我该如何更改按钮的文本?

  • 问题内容: 这里的简单问题。我有一个UIButton,currencySelector,并且我想以编程方式更改文本。这是我所拥有的: Xcode给我错误“期望的声明”。我在做什么错,如何更改按钮的文本? 问题答案: 在Swift 3、4、5中: 除此以外: 还必须为声明。

  • 我使用下面的hack以编程方式更改homeAsupIndicator。 但这在大多数新手机(HTC One、Galaxy S3等)上都不起作用。是否有一种方法可以跨设备统一更改。我只需要在主屏幕上更改它。其他屏幕将具有默认屏幕。因此无法使用样式。xml

  • 我试图通过编程更改edittext的颜色。它可以工作,但正如您从所附的图像中看到的,文本选择的图标仍然使用主题颜色重音,而不是我设置的蓝色。我怎样才能改变它?我目前的代码是:

  • 我已经读过一些关于颜色的线程,但所有这些线程都必须通过style.xml进行设置。 现在我用这个来确定颜色。 是否可以不使用XML,例如使用代码来更改SwitchCompat/Checkbox的颜色?

  • 在Java中,我动态地创建一组文件,我希望在Linux/UNIX文件系统中更改这些文件的文件权限。我希望能够执行的Java等价物。这可能是Java5吗?如果是,怎么做? 我知道在Java6中,对象有/方法。我也知道我可以通过一个系统调用来实现这一点,但如果可能的话,我希望避免这样做。

  • 我的组织正在从Log4j1迁移到Log4j2。我们有一个自定义的滚动文件追加器,当应用程序中发生某个事件时,它会在运行时更改它记录到的文件名。这是为了便于在日志目录中查找日志文件而实现的。例如,日志文件目录可能如下所示; mylog-2021-08-02。日志 mylog-2021-08-03.log 特殊事件(mylog-2021-08-03)。日志 mylog-2021-08-04.log m

  • 我在应用程序中使用微调器和TextInputText,当用户选择微调器项目时,我想更改一些EditText功能(Curor和HintText颜色)。这是我的代码: 我不知道为什么这样不行。有人能帮我吗?