精华内容
下载资源
问答
  • 使用Python Tkinter制作简单的程序界面

    千次阅读 2019-08-15 18:02:45
    Python Tkinter模块对程序进行界面化的一点小实践,目前使用了按钮标签以及文本框等。

    上一篇写到利用Python写了一个对文本进行读取和修改的小工具,最近两天在研究给这个小程序加个界面,对于GUI这里不做赘述,到现在也算是初步完成了,写个博客记录记录。

    首先是界面工具的选用,在菜鸟教程上看到的GUI模块有3款,原文链接Python GUI编程(Tkinter) 文中只对Tkinter工具做了简单的介绍,并没有太深的讲解;查找之下找到了简书上的Tkinter教程,原文链接(八)Python 图形化界面设计 这个文档对Tkinter模块做了详细的介绍和示例,有这方面需要的朋友可以详细的阅读练手。值得一提的是,文本框的输入使能在文中并没有介绍到,我在另一篇文章中找到了有关文本框输入使能的介绍,原文链接Tkinter中关于如何让用户无法编辑Text,又可进行插入、删除操作 此外,为了实现按钮结束程序的功能,需要销毁root的root对象,简书上的Tkinter教程有用到这个对象,但没有过多的描述,为了找到这个对象在vscode里尝试输入root.cl和root.des后,发现root自带一个destroy对象,确定是销毁root的对象。

    由于是第一次做界面,所以定的要求比较低,并不追求界面的美观,只需要基本的功能实现即可。首先遇到的是功能按钮化,原本整合在一个while里的主程序需要拆分成若干个子程序,原程序和拆分后的程序如下:

    此时的代码是基于上代加了输入验证和时间模块引入,并做了一些输出上的微调

    while True:
        print("**************************你爱用不用的报销记录工具**************************\n")
        choose = input("选择你要进行的操作:\n1.提交报销\n2.结束报销\n3.查看所有记录\n4.结束程序\n输入:")#功能选择
        print()
        if not choose :
            print("要我帮你做选择?")
            continue
        elif str(choose).isdigit() == False :
            print("脸滚键盘呢?")
            continue
        fb = open("%s报销记录.txt"%(ADDR),mode = 'a')#确保文件存在,若不存在则在指定目录新建一个
        fb.close()
        if int(choose) == 1:
            fb = open("%s报销记录.txt"%(ADDR),mode = 'r')#打开记录文本
            getline = 0 #获取当前行数,即最后一个编号
            for line in fb.readlines():
                getline += 1
            fb.close()
            while True:
                date = input("输入提交日期,如:20190101,不填则默认当前日期\n输入:")#获取日期,金额和时长
                if not date:
                    date = DATE
                elif int(date) > int(DATE):
                    print("日期输入有误!提交日期不可晚于今天!重新输入!")
                    continue
                money = int(input("输入报销金额\n输入:"))
                days = int(input("输入出差时长\n输入:"))
                break
            line = openfile()
            addline(line,getline,date,money,days)
            print("添加成功!\n")
            
        elif int(choose) == 2:
            fb = open("%s报销记录.txt"%(ADDR),mode = 'r')#打开记录文本
            getline = 0 #获取当前行数,即最后一个编号
            for line in fb.readlines():
                getline += 1
            fb.close()
            line = openfile()
            while True:
                num = int(input("输入要结束的编号\n输入:"))
                if num > getline:
                    print("无此记录!确认后再输入!\n")
                    continue
                if line[num].find('Y') != -1 :
                    print("这条记录已经完成报销了,你别是在逗我吧")
                    continue
                date = input("输入提交日期,如:20190101,不填则默认当前日期\n输入:")#获取日期和金额
                if not date:
                    date = DATE
                elif int(date) >= int(DATE):
                    print("日期输入有误!提交日期不可晚于今天!重新输入!")
                    continue
                money = int(input("输入报销金额\n输入:"))
                break
            endline(line,num,date,money)
            print("添加成功!\n")
        elif int(choose) == 3:
            line = openfile()
            if line == []:
                print("文件为空!\n")
            for i in line:
                print(i)
        elif int(choose) == 4:
            break
        else :
            print("没那么多功能!")
    

    拆分后的代码:
    原本的输入和输出有了明显的变化,输入是获取输入框的内容,输出是将输出内容添加到文本框中

    def choose1():
        txt.config(state = NORMAL)#文本框使能开,允许输入内容
        #输入验证
        flag = True#使while只运行一次,while的意义在于输入有误时能使用break阻止后续代码的运行
        while flag:
            money = inp3.get()
            #money = int(input("输入报销金额\n输入:"))
            days = inp1.get()
            #days = int(input("输入出差时长\n输入:"))
            if (not money) or (not days):
                txt.insert(END,"输入不完整!\n")
                txt.config(state = DISABLED)#在程序中断时及时关闭文本框使能,保证文本框只能被程序修改
                break
            date = inp2.get()
            #date = input("输入提交日期,如:20190101,不填则默认当前日期\n输入:")#获取日期,金额和时长
            if not date:
                date = DATE
            elif int(date) > int(DATE):
                txt.insert(END,("日期输入有误!提交日期不可晚于今天!重新输入!\n"))
                txt.config(state = DISABLED)
                break
                #print("日期输入有误!提交日期不可晚于今天!重新输入!")
            fb = open("报销记录.txt",mode = 'r')#打开记录文本
            getline = 0 #获取当前行数,即最后一个编号
            for line in fb.readlines():
                getline += 1
            fb.close()
    
            line = openfile()
            addline(line,getline,date,money,days)
            txt.insert(END,"添加成功!\n")
            txt.insert(END,'\n')
            txt.config(state = DISABLED)#本次功能结束,关闭文本框使能
    
            inp1.delete(0, END)  # 清空输入
            inp2.delete(0, END)  # 清空输入
            inp3.delete(0, END)  # 清空输入
            #print("添加成功!\n")
            flag = False
    
    def choose2():
        txt.config(state = NORMAL)
        flag = True
        while flag:
            #输入检查
            fb = open("报销记录.txt",mode = 'r')#打开记录文本
            getline = 0 #获取当前行数,即最后一个编号
            for line in fb.readlines():
                getline += 1
            fb.close()
            num = inp1.get()
            if not num:
                txt.insert(END,"选择的编号不能为空!\n")
                txt.config(state = DISABLED)
                break
                #num = int(input("输入要结束的编号\n输入:"))
            elif str(num).isdigit() == False :
                txt.insert(END,"让你输编号呢!\n")
                #print("让你输编号呢!\n")
                txt.config(state = DISABLED)
                break
            num = int(num)
            if num > getline:
                txt.insert(END,"无此记录!确认后再输入!\n")
                #print("无此记录!确认后再输入!\n")
                txt.config(state = DISABLED)
                break
                #flag = False
            elif line[num].find('Y') != -1:
                txt.insert(END,"这条记录已经完成报销了,你别是在逗我吧!\n")
                #print("这条记录已经完成报销了,你别是在逗我吧")
                txt.config(state = DISABLED)
                break
                #flag = False
            date = inp2.get()
            #date = input("输入提交日期,如:20190101,不填则默认当前日期\n输入:")#获取日期和金额
            if not date:
                date = DATE
            elif int(date) >= int(DATE):
                txt.insert(END,"日期输入有误!提交日期不可晚于今天!重新输入!\n")
                #print("日期输入有误!提交日期不可晚于今天!重新输入!")
                txt.config(state = DISABLED)
                break
                #flag = False
            
            money = inp3.get()
            line = openfile()
            #money = int(input("输入报销金额\n输入:"))
            endline(line,num,date,money)
            txt.insert(END,"添加成功!\n")
            txt.insert(END,'\n')
            txt.config(state = DISABLED)
            #print("添加成功!\n")
            inp1.delete(0, END)  # 清空输入
            inp2.delete(0, END)  # 清空输入
            inp3.delete(0, END)  # 清空输入
            flag = False
    
    def choose3():
        txt.config(state = NORMAL)
        line = openfile()
        if line == []:
            txt.insert(END,"文件为空!\n")
            #print("文件为空!\n")
        else:
            for i in line:
                txt.insert(END,i)
                #print(i)
        txt.insert(END,'\n')
        txt.config(state = DISABLED)
    
    def choose4():
        root.destroy()
        #break
    

    界面化之后,相较于shell里执行,界面化的输出不会自动换行,需要在Text.insert里加入额外的换行
    界面模块:

    from tkinter import  *
    import datetime
    
    time = datetime.datetime.now()
    DATE = str(time.year) + str(time.month) + str(time.day)#限定日期,取当前日期,确保输入日期不在未来
    #ADDR = "D:工程部svn\"
    
    #确保文件存在
    fb = open("报销记录.txt",mode = 'a')
    fb.close()
    
    root = Tk()
    root.title("Py报销记录工具")
    root.geometry('480x480')
    
    lb0 = Label(root, text='爱用不用的报销记录工具',bg='#d3fbfb',fg='red',font=('华文新魏',24),width=20,height=2,relief=SUNKEN)
    lb0.place(relx=0.1, rely=0.0, relwidth=0.8, relheight=0.1)
    
    lb1 = Label(root, text="时长/编号:")
    lb1.place(relx=0.0, rely=0.1, relwidth=0.15, relheight=0.1)
    
    inp1 = Entry(root)
    inp1.place(relx=0.15, rely=0.11, relwidth=0.15, relheight=0.08)
    
    lb2 = Label(root, text="日期:")
    lb2.place(relx=0.35, rely=0.1, relwidth=0.1, relheight=0.1)
    
    inp2 = Entry(root)
    inp2.place(relx=0.45, rely=0.11, relwidth=0.2, relheight=0.08)
    
    lb3 = Label(root, text="金额:")
    lb3.place(relx=0.7, rely=0.1, relwidth=0.1, relheight=0.1)
    
    inp3 = Entry(root)
    inp3.place(relx=0.8, rely=0.11, relwidth=0.2, relheight=0.08)
    
    btn1 = Button(root, text='添加记录', command=choose1)
    btn1.place(relx=0.1, rely=0.2, relwidth=0.3, relheight=0.1)
    
    btn2 = Button(root, text='结束记录', command=choose2)
    btn2.place(relx=0.1, rely=0.4, relwidth=0.3, relheight=0.1)
    
    btn3 = Button(root, text='查看记录', command=choose3)
    btn3.place(relx=0.6, rely=0.2, relwidth=0.3, relheight=0.1)
    
    btn4 = Button(root, text='结束程序', command=choose4)
    btn4.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)
    
    txt = Text(root)
    txt.place(rely=0.6, relheight=0.4)
    txt.config(state = DISABLED)#文本框初始使能关
    
    root.mainloop()
    

    界面效果:


    界面化后原来的模块代码:

    def openfile():
        txt.insert(END,"开始读取文件\n")
        #print("开始读取文件")
        fb = open("报销记录.txt",mode = 'r')
        lines = []
        for line in fb:
            lines.append(line)
        txt.insert(END,"读取完成\n")
        #print("读取完成")
        fb.close()
        return lines
    
    def addline(line,getline,date,money,days):
        #txt.insert(END,("添加前:",line,'\n'))
        #print("添加前:",line)
        line.append("%d N %s %d %d "%(int(getline),date,int(money),int(days)))
        #txt.insert(END,("添加后:",line,'\n'))
        #print("添加后:",line)
        fb = open("报销记录.txt",mode = 'w')
        for i in range(len(line)):
            s = str(line[i]).replace('[','').replace(']','').replace("'",'').replace(',','').replace('\n','')#去除[],去除单引号
            #txt.insert(END,(s,'\n'))
            #print(s)
            fb.write(s)
            fb.write('\n')
        txt.insert(END,"添加程序运行完成!\n")
        #print("添加程序运行完成!")
        fb.close()
    
    def endline(line,num,date,money):
        #print(line[num])
        line[num] = line[num].replace('N','Y')
        #print(line[num])
        addstr = str(date) + ' ' + str(money)
        line[num] += addstr
        #print(line)
        fb = open("报销记录.txt",mode = 'w')
        for i in range(len(line)):
            s = str(line[i]).replace('[','').replace(']','').replace("'",'').replace(',','').replace('\n','')#去除[],去除单引号
            #txt.insert(END,(s,'\n'))
            #print(s)
            fb.write(s)
            fb.write('\n')
        txt.insert(END,"结束程序运行完成!\n")
        #print("结束程序运行完成!")
        fb.close()
    

    基本功能已经做好了,后续准备引入父容器,使界面更美观;再引入用户和数据库吧。
    望大佬们多多批评指正,菜鸟在此拜谢!

    展开全文
  • 第一步:安装Pycharm 第二步:安装插件 pip install sip pip install PyQt5 pip install PyQt5-tools 第三步:pycharm配置 ...在Pycharm中,选择“File...1.添加python安装目录下python.exe文件, 2. -m PyQt5.uic.

    第一步:安装Pycharm

    第二步:安装插件

    pip install sip

    pip install PyQt5

    pip install PyQt5-tools

    第三步:pycharm配置

    在Pycharm中,选择“File” —> “Settings” —> “Tools” —> “External Tools”,点击加号添加Qt Designer

    再点击加号,添加PyUIC

    1.添加python安装目录下python.exe文件,

    2. -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py 

    3. $FileDir$

     

    第四步:配置完成后在tools->external tools菜单下点击Qt designer,打开Qt designer编辑界面

     

    使用QT Desinger设计程序主界面

    2.1 设计界面

    在PyCharm中创建一个项目,然后点击“Tools”--“External Tools”--“QTDesinger”打开QT Desinger

    然后向Form中拖入一个“Push Button”和一个“Text Edit”

    2.2 指定点击事件及其响应函数

    在工具栏点击信号-槽编缉按钮----光标移动到“PushButton”按钮上----鼠标左键点击“PushButton”不要松开--拖动光标到Form的任一位置后再松开鼠标左键

    经过上边的操作就出现了如下界面,“pushButton”侧选中“click()”,“Form”侧点击“Edit”

    在上边“Slots”点击绿色“+”按钮,指定click事件的响应函数,名称随意定比如我这里命名为“pushButton_click()”

    (我们这里只是指定事件与响应函数的关联关系,函数是还没实现的,后边我们自行实现)

    这样界面设计和事件关联就完成了,我们下来选择保存,将文件保存到项目的根目录下

    二、使用PyUIC将文件转成python代码

    关闭QT Designer回到PyCharm,查看项目,可以看到只有刚才保存的PyQT_Form.ui文件而且该文件在PyCharm是打不开的

    我们需要将这个文件转成.py代码才能使用

    选中“PyQT_Form”,在其上点击鼠标右键,到“External Tools”中点击“PyUIC”

    完后再看项目文件,就可以看到多了一个“PyQT_Form.py”,双击查看其内容如下:

    三、实现程序

    应该来说我们只要在上边的“PyQT_Form.py”中,将需要的包导入---添加pushButton_click()函数实现代码----实例化Ui_Form类,实现这三步程序应该就差不多了

    但是PyQT_Form.py是PyUIC文件按照“PyQT_Form.ui”生成的,如果我们需要去调整PyQT_Form.ui(比如调整按钮位置调整文本框大小,后续调整界面在实际编程中基本是必然需求)

    调整完后重新生成PyQT_Form.py时,PyUIC可不会管当前我们已经在PyQT_Form.py中写了什么代码,旧PyQT_Form.py会直接被新PyQT_Form.py覆盖

    也就是说,所有逻辑代码我们都不应当写入PyQT_Form.py文件(或者叫不要动PyQT_Form.py文件),我们新建一个文件在里边创建一个子类(MyPyQT_Form)继承PyQT_Form.py中的Ui_Form

    3.1 实现代码

    在项目中新建一个.py文件,写入如下代码

    import sys
    from PyQt5 import QtWidgets
    from PyQT_Form import Ui_Form
     
    class MyPyQT_Form(QtWidgets.QWidget,Ui_Form):
      def __init__(self):
        super(MyPyQT_Form,self).__init__()
        self.setupUi(self)
     
      #实现pushButton_click()函数,textEdit是我们放上去的文本框的id
      def pushButton_click(self):
        self.textEdit.setText("你点击了按钮")
     
     
    if __name__ == '__main__':
      app = QtWidgets.QApplication(sys.argv)
      my_pyqt_form = MyPyQT_Form()
      my_pyqt_form.show()
      sys.exit(app.exec_())

     

    展开全文
  • PySimpleGui是一个Python的Gui库,比较接地气易上手。所以我就简单做了个计算插值多项式的程序试试手。第一次写UI代码,c++高手勿扰。运行程序,首先输入插值节点的数量;然后输入各个节点的坐标,图中的数据正好是...

    PySimpleGui是一个Python的Gui库,比较接地气易上手。所以我就简单做了个计算插值多项式的程序试试手。第一次写UI代码,c++高手勿扰。

    运行程序,首先输入插值节点的数量;

    87e82a42aec1

    然后输入各个节点的坐标,图中的数据正好是我这周助教课的作业;

    87e82a42aec1

    得到插值多项式结果;

    87e82a42aec1

    大概说一下注意点:

    python并不自带PySimpleGui这个库,所以要利用pip或conda安装,即在cmd中运行

    pip install PySimpleGUI

    创建窗口

    import PySimpleGUI as sg

    form = sg.FlexForm('begin with a blank form')

    规划用户界面,将gui按行切分; 第一行文本框和输入框,第二行提交框和取消框;

    layout = [

    [sg.Text('number', size=(5,1)), sg.InputText('')],

    [sg.Submit(), sg.Cancel()]

    ]

    执行点击操作;

    button, values = form.Layout(layout).Read()

    关闭窗口

    form.Close()

    其他配件

    sg.OK() # ok键

    sg.InputCombo(['男','女','隐私'],auto_size_text=True) # 下拉选项

    sg.Slider(range=(1,10)) # 滑动条及其范围

    sg.Radio('游泳',group_id=1),sg.Radio('跑步',group_id=2),sg.Radio('篮球',group_id=3) # 按钮

    sg.Checkbox('是'),sg.Checkbox(否') # 选择框

    sg.FolderBrowse(target='input') # 文件夹浏览

    sg.ProgressBar(100,orientation = 'h', size=(20,20),key='progressbar') # 进度条

    插值计算,直接调用scipy的插值库函数;

    from scipy.interpolate import lagrange

    result = lagrange(x,y)

    全部代码

    """

    Created on 2019-03-16

    @author:Jupiter

    """

    import PySimpleGUI as sg

    from scipy.interpolate import lagrange

    # 修改插值多项式格式

    def change(ret):

    length,nret = ret.order,'y='

    if length > 1:

    nret += str(round(ret.c[0],4))+'x^'+str(length)

    for i in range(length-2):

    if ret.c[i+1]>0:

    nret += '+' + str(round(ret.c[i+1],4))+'x^'+str(length-i-1)

    else :

    nret += str(round(ret.c[i+1],4))+'x^'+str(length-i-1)

    if length >= 1:

    if ret.c[-2] >= 0:

    nret += '+'+str(round(ret.c[-2],4))+'x'

    else :

    nret += str(round(ret.c[-2],4))+'x'

    if ret.c[-1] >= 0:

    nret += '+'+str(round(ret.c[-1],4))

    else :

    nret += str(round(ret.c[-1],4))

    return nret

    # 获取插值节点数量

    form1 = sg.FlexForm('输入插值节点数量(n≥2)')

    layout = [

    #[sg.InputCombo(['男','女','隐私'],auto_size_text=True)],

    [sg.Text('number', size=(5,1)), sg.InputText('')],

    [sg.Submit(), sg.Cancel()]

    ]

    button, values = form1.Layout(layout).Read()

    print(button, values[0])

    form1.Close()

    # 获取插值节点坐标

    form2= sg.FlexForm('输入节点坐标')

    layout = []

    for i in range(int(values[0])):

    layout.append([sg.Text('(x,y)', size=(3,2)),sg.Input(),sg.Input()])

    layout.append( [sg.Text('Author:Jupiter')])

    layout.append( [sg.Submit(), sg.Cancel()])

    button, values = form2.Layout(layout).Read()

    form2.Close()

    x,y = [],[]1

    for i in range(len(values)//2):

    x.append(float(values[i*2]))

    y.append(float(values[i*2+1]))

    print(button,x,y)

    #ret = lagrange(x,y)

    ret = change(lagrange(x,y))

    # 输出多项式插值结果

    form3= sg.FlexForm('多项式插值结果')

    layout = [[sg.Text('插值多项式',size=(10,1))]]

    for i in range(len(x)):

    layout.append([sg.Text('(x,y)'),sg.Text(x[i]),sg.Text(y[i])])

    layout.append([sg.Text('------------------------------------')])

    layout.append([sg.Text(ret)])

    layout.append([sg.OK(),sg.Cancel(),sg.Text('Author:Jupiter')])

    button, values = form3.Layout(layout).Read()

    展开全文
  • 修改spec文件: 在datas那加两个resources a = Analysis(['bubble_sort.py'], pathex=['C:\\python_file'], binaries=[], datas=[("resources","resources")], 在这里注意,在Python工程里面新建resources文件夹,把...

    1.下载pyinstaller  : pip install pyinstaller

    2. 修改代码:加get_resources_path函数

    #coding:utf-8
    import tkinter
    import os
    import sys
    
    
    #利用此函数实现资源路径的定位
    def get_resources_path(relative_path):
        if getattr (sys, "frozen", False):
            base_path = sys._MEIPASS #获取临时资源
        else:
            base_path = os.path.abspath(".") #获取当前路径
        return os.path.join(base_path, relative_path) #获取绝对路径
    
    
    LOGO_PATH  = get_resources_path(os.path.join("resources" ,"cc1.ico"))
    IMAGE_PATH = get_resources_path(os.path.join("resources" ,"cc2.png")) 
    
    class MainForm:
        def __init__(self):
            root = tkinter.Tk()  #新建一个窗体
            root.title ( "吃不胖的粥") #标题
            root.geometry("500x400")  #初始窗口大小,为小写x
            root.maxsize (1000,400) #最大化后窗口大小
            root.iconbitmap(LOGO_PATH) #图标,bmp格式可直接修改后缀
            root["background"] = "LightPink" #界面颜色设置,其他颜色可以百度
    
            label_text = tkinter.Label(root, text ="欢迎光临",
            width = 100, height = 100,   #设置标签的长宽
            bg = "yellow",   #设置标签的背景颜色
            fg = "#ffffff",   #设置字体的颜色
            font = ("微软雅黑", 20),   ##设置字体款式
            justify = "right")  #右边对齐
    
            photo = tkinter.PhotoImage(file = IMAGE_PATH) #标签显示图片
            label_image = tkinter.Label(root, image = photo)
            
            label_image.pack() #显示标签
           # label_text.pack() #显示标签
    #----------------------------------------------------------------------------------#
            text = tkinter.Text(root, width = 50, height = 15, font =("微软雅黑",10))
            text.insert("insert", "simple")
            text.image_create("current", image = photo)
           # text.pack()
    #-----------------------------------------------------------------------------------#
            button = tkinter.Button(root, text = "请选择你想吃的菜",
             image = photo, 
             compound = "bottom",
             fg = "green",
             font = ( "微软雅黑",10))
    
            button.pack()
    
            root.mainloop() #显示窗体
    
    def main():
        MainForm()
    
    if __name__ == "__main__":
        main()
    

    3.  生成.spec文件: cmd 输入 py-makespec -F .py文件名

    4.修改spec文件: 在datas那加两个resources

                a = Analysis(['bubble_sort.py'],
                 pathex=['C:\\python_file'],
                 binaries=[],
                 datas=[("resources","resources")],

    在这里注意,在Python工程里面新建resources文件夹,把用到的图标和图片拖到一起

    5. 生成exe文件:pyinstaller -F .spec文件

    展开全文
  • 步骤:1、要利用python制作exe应用程序,先利用wxpython制作windows底下的gui界面窗口。a、安装wxpython,cmd命令行模式底下进行安装,本机安装的是python3.6.4,所以可以使用pip install wxpython进行安装,(可以使用...
  • Python脚本制作exe程序

    2021-02-03 20:47:30
    文章目录1、将python脚本打包成exe程序2、制作exe程序...常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,但是由于Python是一种解
  • python的tkinter制作表白程序

    千次阅读 2020-04-16 22:03:54
    有个同学说他要给女神写个程序,我就突然想到了以前在网上找到的一个表白小程序,现在我台式机里应该还有,就是那种按钮会跳的那种,恰巧这学期我们有python课,顺便巩固一下tkinter的界面编写知识,我就决定用...
  • 如果想使用python语言调用WebView,可以通过事件来解决WebView和调用语言间的相互沟通问题。无论是python发出的事件或者WebView中js发出的事件,都可以被另一方接收处理。 使用python响应js抛出的事件 让我们...
  • 有时将代码转成带有界面程序,会极大的方便使用,虽然在网上有很多现成的GUI系统,但是套用别人的代码,心里难免有些尴尬,所以本文将用python爬虫结合wxpython模块构造一个NBA爬虫小软件。 本文框架构造将分为二...
  • 有时将代码转成带有界面程序,会极大的方便使用,虽然在网上有很多现成的GUI系统,但是套用别人的代码,心里难免有些尴尬,所以本文将用Python爬虫结合wxpython模块构造一个NBA爬虫小软件,演示效果如下 ...
  • 常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,但是由于Python是一种解释性语言,不具有Windows可执行程序的已编译完成的二...
  • 有时将代码转成带有界面程序,会极大的方便使用,虽然在网上有很多现成的GUI系统,但是套用别人的代码,心里难免有些尴尬,所以本文将用Python爬虫结合wxpython模块构造一个NBA爬虫小软件,演示效果如下 ...
  • 通过PC端win+R,输入cmd进入控制台界面,cd到你的文件夹下 可以通过pip命令操作安装:pip install pyinstaller 有时候会出现两种错误: 其中一种是pip命令也许需要更新,此时就可以先更新pip, python -m pip install ...
  • 却道天凉好个秋~pyqt5+python+qtdesigner+pycharm制作一个可视化的GUI爬虫工具前言:最近闲来无聊又开始了py之路,这次需要的是制作一个贴吧的关键词搜索相关帖子的工具,开始以为百度贴吧没有“全吧搜索”这样的...
  • M3U8文件,ts格式视频文件爬取 带DUI界面的爬取软件 开发语言:Python+QT5 使用多线程爬取下载视频文件,可使用配置文件修改线程数量。 GitHub:https://github.com/asdbaihu/Crawler-9.git
  • 一、前言有时将代码转成带有界面程序,会极大的方便使用,虽然在网上有很多现成的GUI系统,但是套用别人的代码,心里难免有些尴尬,所以本文将用Python爬虫结合wxpython模...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 494
精华内容 197
关键字:

python程序界面制作

python 订阅