PyQt5简单上手案例1

“你试过在人群里默默地观察一个人么?你从他的生活里找不到任何八卦任何亮点,你会想我靠!我要是他可不得郁闷死了?能不那么孤独么?可你发现你并不讨厌他,因为你也跟他一样……”

太久没玩,首先回顾一下搭建环境吧。

pyqt5环境搭建

修改debug信息

由于pyqt5的一些报错信息不会具体显示,需要在pycharm中设置成展示具体详细报错信息。

创建操作界面

搭建好环境后,开始构建操作界面。

不要选最上面的两个

左边是最常用的控件,包括按钮,输入框等

上面的这些按钮可以将控件格式化,变得更加整齐。

选择控件,右边是你选择控件的属性。

如图即选择输入框的命名为:textEdit_2

启动操作界面

使用插件将UI生成py代码后,首部导入三行代码

import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
from functools import partial

比如你生成的代码类名为:Ui_MainWindow

在最后加上如下代码即可召唤启动界面

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mywin = QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(mywin)
    mywin.show()
    sys.exit(app.exec_())

与控件交互

刚刚写的界面其实没有任何作用,不能进行交互作用,想要起到作用其实是非常简单的~

首先你的找到你的控件的变量名,一般来说变量名在你的PYdesginer中可以看到,也可以在UI生成的PY文件的类中找,比如:

找到变量名,按钮的变量名是:pushButton,另一个按钮的变量名是:pushButton_2。

展示一下作用,创建一个函数:

def go():
    print('我的一个稻谷朋友种玉米')

然后在最后启动代码的

mywin.show()# 加上
ui.pushButton.clicked.connect(go)

即可,这样点一下按钮控制台就会输出文字,如果想要在控制界面进行展示请往下看。

找到输入框,输入框的变量名是:textEdit,另一个输入框的变量名是:textEdit_2

textEdit的属性有如下:

修改输入框内文字,注意必须是字符串格式
textEdit.setText('修改文字666')

输入框追加文字
textEdit.append('我是第二行')
textEdit.append('我是第三行')

读取输入框的文字
textEdit.toPlainText()

清空输入框的文字
textEdit.clear()

注意了,这里不同类型的输入框,获取文本和修改文本的方法是不一样的,具体用法需要自行百度,这里记录一些常用的

QTextEdit:一个多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条,Qtextedit不仅可以用来显示文本还可以用来显示HTML文档

setPlainText()    设置多行文本框的内容
toPlainText()    返回多行文本框的文本内容
setHtml()    设置多行文本框的文本内容为HTML文档,HTML文档是描述网页的
toHtml()    返回多行文本框的HTML内容
clear()    清除多行文本框的内容


plainTextEdit:也是文本
plainTextEdit_5.toPlainText()  获取文本
plainTextEdit_5.appendPlainText("...")  在原本内容基础上增加内容

完整代码

作用:将网址自动转换成IP,支持批量

代码如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '002.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
import socket,sys
from PyQt5.QtWidgets import QApplication,QMainWindow
from functools import partial
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1198, 706)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_2.setObjectName("textEdit_2")
        self.horizontalLayout.addWidget(self.textEdit_2)
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setObjectName("textEdit")
        self.horizontalLayout.addWidget(self.textEdit)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1198, 23))
        self.menubar.setObjectName("menubar")
        self.menuIP = QtWidgets.QMenu(self.menubar)
        self.menuIP.setObjectName("menuIP")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.menubar.addAction(self.menuIP.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.textEdit_2.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">http://www.langzi.fun</p></body></html>"))
        self.pushButton.setText(_translate("MainWindow", "转换"))
        self.pushButton_2.setText(_translate("MainWindow", "清空"))
        self.menuIP.setTitle(_translate("MainWindow", "IP转换器"))
def cover(ui):
    url = ui.textEdit_2.toPlainText()
    urls = (url.split('\n'))
    for url in urls:
        url = url.strip('/') if '://' not in url else url.split('://')[1].strip('/')
        try:
            ip = socket.gethostbyname(url)
        except:
            ip = '转换失败'
        ui.textEdit.append(ip)
def clean(ui):
    ui.textEdit.clear()
    ui.textEdit_2.clear()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mywin = QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(mywin)
    mywin.show()
    ui.pushButton.clicked.connect(partial(cover,ui))
    ui.pushButton_2.clicked.connect(partial(clean,ui))
    sys.exit(app.exec_())
坚持原创技术分享,您的支持将鼓励我继续创作!
------ 本文结束 ------

版权声明

LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

0%