Python学习第六课(做个界面,让使用者更加简单)
突破阶层,更多成长空间
就上节课的结果而言,我们已经制作了由爬虫、随机数、显示形成的综合性互动型程序。
虽然它还可以增加更多功能,比如:数据分析、数据筛选。
但是,它还是仅仅停留在命令行的阶段。
怎么给它突破一下?
基础知识
tkinter库,包含了很多基础的GUI方法,可以让我们创建一个可视化的面板,并提供了一定的个性化配置方式。
这里我们掌握几个基础的:
- Frame容器,制作窗体软件的基础,框架控件,可以把其他空间放在frame上。
- Label,标签控件(Label)指定的窗口中显示的文本和图像,一般情况不允许修改。
- Scale,范围控件;显示一个数值刻度,类似音量调节,get()方法可以获得它的值。
- Button,按钮控件,顾名思义。
- StringVar,用来设置内容,如果其内容被修改,标签文本将自动更新。
尝试创建一个面板
了解了基础知识,我们来尝试创建一个面板,准备为第五课的程序加上脸面。
from tkinter import *
from tkinter import messagebox
def show():
jg = str(slred.get())+" "+str(slblue.get())
messagebox.showinfo("结果", jg)
root = Tk()
root.geometry("600x300+400+400")
main = Frame(root)
slred = Scale(main, from_=6, to=33, orient="horizontal", tickinterval=1, length=500, label="红球", sliderlength="10", sliderrelief="flat", width="5")
slblue = Scale(main, from_=1, to=16, orient="horizontal", tickinterval=1, length=500, label="蓝球", sliderlength="10", sliderrelief="flat", width="5")
b1 = Button(main, text ="生成", command=show)
slred.pack()
slblue.pack()
b1.pack()
main.pack()
root.mainloop()
我们创建了一个根面板,大小为600×300,起始位置在屏幕的(400,400)。
然后在根面板上放置了一个主Frame容器。
在容器中,我们放置了两个Scale控件,一个代表红球,一个代表蓝球,刻度就是可以生成的数量范围。(是不是杜绝了输入不规范的问题?)
然后我们设置了一个“生成”按钮,点击就会执行上面的show方法
在show方法中,我们使用Scale控件的get方法获取当前的值,并弹框出来,让我们知道程序是否成功。
好的,运行一下试试:
是成功的。
有机结合,生产加工
下面,我们就把这段代码导入上节课的代码主程序中,同时对上面的生产、打印部分做个简单修改。
首先,主程序中,暂时删除运行代码。
同时,加入刚才的代码,并把爬取开奖信息的代码拿出到主程序中,这样在打开程序的时候就可以看到开奖信息了。
if __name__ == "__main__":
root = Tk()
root.geometry("600x300+400+400")
root.title("双色球小程序")
main = Frame(root)
v = StringVar()
code = getNum()
check = checkUrl(code)
Ltitle = Label(main, text="上一期("+code+")开奖结果: ", font=("宋体", 16, "bold"), width="600", bd="2", anchor="w")
LRed = Label(main, text="红球:"+check['red'], font=("宋体", 12, "bold"), width="600", bd="2", fg="RED")
LBlue = Label(main, text=