Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字符串中按下QpushButton时,如何在QlineEdit中获取文本?_Python_Pyqt5_Pyqt4_Qlineedit - Fatal编程技术网

Python 在字符串中按下QpushButton时,如何在QlineEdit中获取文本?

Python 在字符串中按下QpushButton时,如何在QlineEdit中获取文本?,python,pyqt5,pyqt4,qlineedit,Python,Pyqt5,Pyqt4,Qlineedit,我正在尝试实现一个函数。我的代码如下 当用户单击名为“connect”的按钮时,我希望以字符串形式获取lineedit中objectname为“host”的文本,并说“shost”。我该怎么做?我试过了,但失败了。如何实现此功能 import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class Form(QDialog): def __init__(self, parent=None): sup

我正在尝试实现一个函数。我的代码如下

当用户单击名为“connect”的按钮时,我希望以字符串形式获取lineedit中objectname为“host”的文本,并说“shost”。我该怎么做?我试过了,但失败了。如何实现此功能

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *


class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        le = QLineEdit()
        le.setObjectName("host")
        le.setText("Host")
        pb = QPushButton()
        pb.setObjectName("connect")
        pb.setText("Connect") 
        layout.addWidget(le)
        layout.addWidget(pb)
        self.setLayout(layout)

        self.connect(pb, SIGNAL("clicked()"),self.button_click)

        self.setWindowTitle("Learning")

    def button_click(self):
    #i want the text in lineedit with objectname 
    #'host' in a string say 'shost'. when the user click 
    # the pushbutton with name connect.How do i do it?
    # I tried and failed. How to implement this function?




app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

现在我如何实现“按钮点击”功能?我刚刚开始使用pyQt

我的第一个建议是使用Qt设计器创建gui。自己打字很糟糕,需要更多的时间,而且你肯定会比Qt Designer犯更多的错误

以下是一些帮助你走上正轨的方法。列表中的第一个是您应该从哪里开始

了解特定类可用的方法的一个很好的指南是。在本例中,您将查找
QLineEdit
,并看到有一个
text
方法

要回答您的具体问题:

要使GUI元素对对象的其余部分可用,请在它们前面加上
self.

import sys
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        self.le = QLineEdit()
        self.le.setObjectName("host")
        self.le.setText("Host")
        
        self.pb = QPushButton()
        self.pb.setObjectName("connect")
        self.pb.setText("Connect") 
        
        layout = QFormLayout()
        layout.addWidget(self.le)
        layout.addWidget(self.pb)

        self.setLayout(layout)
        self.connect(self.pb, SIGNAL("clicked()"),self.button_click)
        self.setWindowTitle("Learning")

    def button_click(self):
        # shost is a QString object
        shost = self.le.text()
        print shost
        

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

对象名称不是很重要。 您应该关注的是存储lineedit对象(le)和按钮对象(pb)的变量

QObject(self.pb,信号(“clicked()”),self.button\u clicked) 已单击def按钮(自行): self.le.setText(“shost”) 我想这就是你想要的。
我希望我正确地回答了您的问题:)

在PyQt5中实现了一个可接受的解决方案

import sys
from PyQt5.QtWidgets import QApplication, QDialog, QFormLayout
from PyQt5.QtWidgets import (QPushButton, QLineEdit)

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        self.le = QLineEdit()
        self.le.setObjectName("host")
        self.le.setText("Host")

        self.pb = QPushButton()
        self.pb.setObjectName("connect")
        self.pb.setText("Connect")
        self.pb.clicked.connect(self.button_click)

        layout = QFormLayout()
        layout.addWidget(self.le)
        layout.addWidget(self.pb)
        self.setLayout(layout)

        self.setWindowTitle("Learning")

    def button_click(self):
        # shost is a QString object
        shost = self.le.text()
        print (shost)


app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

我犯了这个错误!AttributeError:'Form'对象没有属性'le',您需要在
\uuuu init\uuu
函数中将其命名为
self.le
。在你的
表单中使用它的地方
类应该是
self.le
。我没有理解你。对不起,我才刚开始这些。。。我使用了你提供的代码,错误出现了。我认为在它里面,它已经是self.leI了。当我运行上面的代码时,我不会得到错误。我使用的是Python2.6,您使用的是什么版本?shost=self.le.text()可能会给出一个QString输出。使用str()将其转换为有意义的全文。
import sys
from PyQt5.QtWidgets import QApplication, QDialog, QFormLayout
from PyQt5.QtWidgets import (QPushButton, QLineEdit)

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        self.le = QLineEdit()
        self.le.setObjectName("host")
        self.le.setText("Host")

        self.pb = QPushButton()
        self.pb.setObjectName("connect")
        self.pb.setText("Connect")
        self.pb.clicked.connect(self.button_click)

        layout = QFormLayout()
        layout.addWidget(self.le)
        layout.addWidget(self.pb)
        self.setLayout(layout)

        self.setWindowTitle("Learning")

    def button_click(self):
        # shost is a QString object
        shost = self.le.text()
        print (shost)


app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()