Python文本框与按钮

我来了。先亮出代码今天的文本框代码吧!

import sys
from PyQt5.QtWidgets import QWidget, QLabel,QLineEdit,QApplication

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.settings()

    def settings(self):
        a = QLabel(self)
        a.setText('用户名:')
        a.move(40,102)
        b = QLineEdit(self)
        b.setPlaceholderText('请输入用户名')
        b.move(100,100)
        c = QLabel(self)
        c.setText('密码:')
        c.move(40, 152)
        d = QLineEdit(self)
        d.setPlaceholderText('请输入密码')
        d.move(100, 150)
        self.setGeometry(300, 300, 500, 300)
        self.setWindowTitle('文本框')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

这个变量名其实是不对的。在正式编程做项目的时候,大家不要取什么abc,一定要取与变量作用相同的变量名。比如一个变量的作用是等待的秒数,那变量名就是wait_sec,简单点,也可以是wait,但是不能是a。这样变量一多,你就不知道这个变量是干嘛的了。当然也可以在设定变量的时候加注释。我们这只是教程,变量少,所以这样更加简便。

现在我们来讲这个文本框。
a与c都是标签。b与d是文本框。文本框其实就是让你输入,类似于input,提示的语句就是setPlaceholderText。你所看到的淡色字,就是这样设定的。

当然,用户输入后你可以获取到用户输入的东西:

import sys
from PyQt5.QtWidgets import QWidget,QLabel,QLineEdit,QApplication

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.settings()

    def settings(self):
        a = QLabel(self)
        a.setText('用户名:')
        a.move(40,102)
        b = QLineEdit(self)
        b.setPlaceholderText('请输入用户名')
        print(b.text())
        b.move(100,100)
        c = QLabel(self)
        c.setText('密码:')
        c.move(40, 152)
        d = QLineEdit(self)
        d.setPlaceholderText('请输入密码')
        d.move(100, 150)
        self.setGeometry(300, 300, 500, 300)
        self.setWindowTitle('文本框')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

当然,你是不会看到效果的。为什么???因为你一开始文本框里是没有输入内容的。所以只输出了空白。大家仔细看结果,是不是发现比平时运行完毕多空了一行,那就是输出的内容。

那么怎么能知道我们输入了什么呢?朋友们可以仔细想想,平时我们注册或登录的时候,除了输入,还有什么?

按钮!!!

所以由此我们再来学习一下按钮,也是代码先上(与前面的无关):

import sys
from PyQt5.QtWidgets import QWidget,QLabel,QPushButton,QCheckBox,QApplication
from PyQt5.QtGui import QFont

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.settings()

    def settings(self):
        b1 = QPushButton("确定", self)
        b1.move(30, 50)
        b2 = QPushButton("取消", self)
        b2.move(150, 50)
        b1.clicked.connect(self.Clickedbutton)
        b2.clicked.connect(self.Clickedbutton)

        self.setGeometry(300, 300, 390, 350)
        self.setWindowTitle('按钮')
        self.show()

    def Clickedbutton(self):
        print(self.sender())
        print(self.sender().text() + '被用户按下')

按钮由QPushButton创建。大家注意,按钮的名字在第一个参数位,第二个一般都是self,如果你不懂。希望你可以试试改成别的变量,然后就懂了,这里给大家留个小小的动手项目。然后在窗口设定前的b1.clicked.connect(self.Clickedbutton)与b2.clicked.connect(self.Clickedbutton)是什么呢?

那个是绑定信号。按钮其实有更多的,不过我只讲这个。因为其它的有点复杂。我讲的话又要牵涉好多复杂的知识。所以,我打算只讲这个。

继续讲。两个按钮绑定了信号,然后就运行Clickedbutton里的内容。说简单了,就是按下按钮后,运行Clickedbutton这个函数里的内容。

Clickedbutton里的第一个输出是输出这个button。这个我们上次也讲过,就是会输出这种:<PyQt5.QtWidgets.QPushButton object at ID>,其实就是输出这个button的信息。如果你要打印出这个按钮的名字,就是self.sender().text()。

现在我们两个串起来用,解决我们刚刚的问题:

import sys
from PyQt5.QtWidgets import QWidget, QLabel,QLineEdit,QApplication,QPushButton

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.settings()

    def settings(self):
        self.setGeometry(300, 300, 500, 300)
        self.setWindowTitle('文本框')
        self.a = QLabel(self)
        self.a.setText('用户名:')
        self.a.move(40,102)
        self.b = QLineEdit(self)
        self.b.setPlaceholderText('请输入用户名')   #设置文本框浮现文字
        self.b.move(100,100)
        self.c = QLabel(self)
        self.c.setText('密码:')
        self.c.move(40, 152)
        self.d = QLineEdit(self)
        self.d.setPlaceholderText('请输入密码')
        self.d.move(100, 150)
        self.yes = QPushButton('确定',self)
        self.yes.move(250,250)
        self.yes.clicked.connect(self.Clickedbutton)
        self.show()

    def Clickedbutton(self):
        print('用户名为:' + self.b.text())
        print('密码为:' + self.d.text())

当然,如果你想把这个输出放到界面上,就用标签setText就行了。大家可以去尝试尝试。在这里我给大家一点建议与提示。就是设置abcd与yes变量的时候,最好加个self.,这样可以在整个类中用。如果你没加,那就有点麻烦。所以大家设置这种变量的时候,尽量加一个self.。如果你以后想在类的其它地方用,那么就可以随便调用了。

好了,这是今天的Gui知识,如果大家喜欢,不妨花个五秒,加个关注,点个赞。如果大家有疑惑,可以在评论区询问,伙伴们也可以加我的QQ:3418772261。在QQ里,我可以提供答疑。那么下期再见了,拜拜!

发布了22 篇原创文章 · 获赞 68 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Persia_king/article/details/105243750