第二个程序,链接一个函数

想要点击一个按键,运行一个程序,是很自然的想法,如何去实现呢?

写一个小程序:

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon,QFont
from PyQt5.QtWidgets import QWidget, QToolTip, QPushButton, QMessageBox, QApplication
from PyQt5.QtCore import QCoreApplication

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        def helloworld():
            print('hello, world')

        ##创建窗口:
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('FirstPyQtProgram')

        ##创建按钮:
        qb = QPushButton('Button', self)##创建一个按钮
        qb.resize(qb.sizeHint())
        qb.move(50, 50)
        
        ##链接按钮行为:
        qb.clicked.connect(helloworld)

        ##创建按钮提示框:
        qb.setToolTip('This is a HelloWorld Button')

        self.show()


if __name__ == '__main__':


    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

这样子就实现了一个功能:点击按钮,就会调用helloworld函数。以此为基础,其实已经可以实现自己写的函数与pyqt图形界面的对接了。什么信号与槽,以后再说,我先用用总没事吧。

将自己一个函数做个简单的ui:
getdata.py:

import urllib.request
from bs4 import BeautifulSoup
import os

def getdata(url):

    response = urllib.request.urlopen(url)

    html = response.read()

    html = html.decode("gb2312")

    soup = BeautifulSoup(html, 'html.parser')

    book = soup.prettify()

    data = book.split('\n')

    num = len(data)
    i = 0
    ii = 1

    s = []
    ss = []

    while i < num:
        if data[i] == ' GPS控制点WGS84坐标':
            while ii == 1:
                if data[i] ==  ' 采集数据':
                    ii = 0
                else:
                    if data[i] !=  ' 采集数据':
                        s.append(data[i])
                        i += 1
        else:
            i += 1

    i = 0
    num = len(s)

    while i < num:
        ii = 0
        n = len(s[i])
        while ii < n:
            if s[i][ii] != '<':
                flag = 0
                ii += 1
            else:
                flag = 1
                ii = n
        if flag == 0:
            ss.append(s[i].strip())
            i += 1
        else:
            i += 1

    d = [ss[11]+'\n',
         ss[13].replace('.','#')+' '+ss[14].replace('.','#')+' '+ss[15]+'\n',
         ss[20].replace('.','#')+' '+ss[21].replace('.','#')+' '+ss[22]+'\n',
         ss[24].replace('.','#')+' '+ss[25].replace('.','#')+' '+ss[26]+'\n',
         ss[28].replace('.','#')+' '+ss[29].replace('.','#')+' '+ss[30]+'\n',
         ss[16].replace('.','#')+' '+ss[17].replace('.','#')+' '+ss[18]+'\n']

    i = 0
    num = len(d)

    while i < num:
        d[i] = d[i].replace('°','.')
        d[i] = d[i].replace('′','')
        d[i] = d[i].replace('″','')
        d[i] = d[i].replace('#','')
        d[i] = d[i].replace(':','.',1)
        d[i] = d[i].replace(':','',1)
        d[i] = d[i].replace(':','.',1)
        d[i] = d[i].replace(':','',1)
        i += 1

    
    f_write = open('WGS84坐标.txt','a')
    for i in d:
        f_write.write(i)

    f_write.close()




readhtml.py:

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon,QFont
from PyQt5.QtWidgets import QWidget, QToolTip, QPushButton, QMessageBox, QApplication
from PyQt5.QtCore import QCoreApplication

import os
import getdata

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        def readhtml():
            url ='file:///C:/Users/zk/Desktop/readhtml/html-%E6%80%9D%E6%8B%93%E5%8A%9B/E15_071613.html'
            getdata.getdata(url)
            print('完成')
            
        ##创建窗口:
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('FirstPyQtProgram')

        ##创建按钮:
        qb = QPushButton('ReadHtml', self)##创建一个按钮
        qb.resize(qb.sizeHint())
        qb.move(50, 50)
        
        ##链接按钮行为:
        qb.clicked.connect(readhtml)

        self.show()


if __name__ == '__main__':


    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

这样就简单地将函数与pyqt结合起来了。缺点还是有的:

第一,若是可以实现点击按键,弹出选择文件或文件夹目录,就比较好;
第二,窗口内应该添加文字提示;

这两个要求应该还是比较容易实现的。好好努力,改进这个程序。

你可能感兴趣的:(第二个程序,链接一个函数)