Python GUI项目实战(二)主窗体的界面设计与实现

Python012

Python GUI项目实战(二)主窗体的界面设计与实现,第1张

上一节我们介绍了登录窗体的GUI设计与功能实现,用户的账号和密码校验完成后应当跳转到主窗体内容,这一节我们将具体介绍主窗体界面的设计与功能实现!

我们新建一个900x640的窗口,顶部加入图片,下面主体部分创建两个Panedwindow容器,左边添加按钮,右边作为TreeView显示界面;

显示效果:(注意:tkinter在Mac上Panedwindow不支持修改前景色背景色)

在右边的Pannedwindow容器中,添加一个LabelFrame容器作为查询区域,在LabelFrame容器中添加一系列的Label、Entry、Button控件,可以输入学号、姓名、电话、身份证、查询、和显示全部信息:

显示效果:

创建控件、设置对齐方式和每个列的标题

显示效果:

登录成功后,在顶部显示用户姓名和登录时间,用户姓名是怎么来的?是我们在登录窗口输入的,所以这就涉及到了跨窗体数据的传递。这一点非常重要!

登录窗体(登录信息)==>主窗体

传递的基本方式:构造函数

在主窗体的构造函数中添加一个接收参数 current_user ,在登录窗体加载新窗体时将参数传递进去

但是我们登录窗体的登录函数 login() 中用户名的变量 user 是局部变量,函数调用完了之后就变量就没有了,那怎么调用呢?

我们需要在登录窗体的构造函数中定义全局变量:

为了获取用户登录的时间,我们定义一个获取当前时间的方法:

然后在加载主窗体时将参数 self.user 和 self.get_now_time() 作为参数传递进去

另一边,我们在主窗体中,在构造函数中添加全局变量

之后,我们在Top_banner中通过标签将user信息展示出来:

这样主窗口就会显示通过登录窗口登录的用户名(首字母自动转大写)和登录时间:

效果演示:

然后我们在构造方法中把这个函数写入,以实现自动把学生信息写入到all_student_list中

文件中读取到的学生信息存储到all_student_list列表,以此作为参数传入加载TreeView的方法中;

在构造方法中调用该方法,自动把所有学生信息加载到TreeView中

运行效果:

这一节我们实现了主窗体的搭建,从界面的布局到TreeView加载全部学生信息。学生数据如此之多,如果我们想精确查看具体某个学生的信息该怎么做呢?下一讲,我们将实现学生信息的查询功能,敬请期待吧~

通过import tkinter导入Tkinter模块,没有这句下面的都不成立了。

python学习网,大量的免费python视频教程,欢迎在线学习!

相关推荐:《Python教程》

win=tkinter.Tk(),这句是创建windows的窗口对象,注意后面的Tk,大小写。

win.title("窗口"),这段是设置窗口上的标题。

另外窗口的大小你可以通过win.geometry('size')来设置,但这里需要注意一个问题。

比如我们要设置1000*500的窗口,即win.geometry('1000x500')。而1000x500和1000*500区别就在中间的x和*,

我们要的是字母x而不是数字上的乘号。

最后输入这个win.mainloop()让窗口循环,也就是一直显示窗口。操作结果如图:

如果想要设置一个窗口范围,我们可以通过win.minsize('400x600')和win.maxsize('1400x600')来操作。

:获取目前窗口的层次,对于获取此窗口中指定的子窗口的句柄有非常重要的意义。此部分功能Pyspy++是无法提供的,因为它只提供一个子窗口,所以无法获得目前窗口的层次 例如我想获得OG2263登录界面的窗口层次方法如下: 使用1)中的方法将查找图标拖