精华内容
下载资源
问答
  • Winform之学生信息管理系统各种子窗体()

    万次阅读 多人点赞 2015-05-06 20:51:25
    对于登录窗体的设计还是存在着一些弊端,那就是需要登录学生信息管理系统时如果输入的数据出错不必一个个删除,就需要在窗体上再添加一个清空写入数据的button控件,将其属性Text改重置。还有一个与登录窗口设计的...

            先来补充一下学生信息管理系统登录窗体,在完成的过程中总是遇到各种各样的问题,对于登录窗体的设计还是存在着一些弊端,那就是需要登录学生信息管理系统时如果输入的数据出错不必一个个删除,就需要在窗体上再添加一个清空写入数据的button控件,将其属性Text改为重置。还有一个与登录窗口设计的属性AcceptButton将其改为确定按钮的唯一名字(也就是button1),因此在按下回车键后我们也能登录到学生信息管理系统主页面相对应的CancelButton将其改为取消按钮的唯一名字(也就是button2),因此在按下退出键后也能退出登录窗口。

           需要在重置的button按钮控件添加的Click事件的代码为:

            <span style="font-size:18px;">private void button3_Click(object sender, EventArgs e)
            {
                textBox1.Text = "";
                textBox2.Text = "";
            }</span>

            完成改动后的登录窗口为:

     

           下面就来设计一些需要都用到的子窗体。

            一学生信息添加窗体

            学生信息添加窗体窗体主要是用来添加学生信息或者修改学生信息,输入学号、姓名、性别、出生日期、家庭住址、家庭电话和所在班级,点击“保存”按钮即可录入或者修改学生信息记录,点击“取消”按钮,退出学生信息添加窗体。这个窗体需要用到的控件有Label控件,TextBox控件,Button控件,Panel控件和ComboBox控件。在学生信息管理系统主页面中的菜单选项中找到学生管理,再次单击学生信息就会出现学生信息添加的窗口。

     

              二用户信息添加窗体

             用户信息添加窗体主要是实现登录用户的添加操作。该窗体中包含了用户名、密码、确认密码和用户权限这些信息。当点击“保存”按钮时,即可以将用户的这些信息添加到数据库中。点击“取消”按钮,可以退出用户信息添加窗体。这个窗体需要用到的控件有Label控件,TextBox控件,Button控件,Panel控件和ComboBox控件。在学生信息管理系统主页面中的菜单选项中找到系统管理,再次单击用户信息就会出现用户信息添加的窗口。

     

            三用户修改密码窗体

            用户修改密码窗体主要是实现用户修改密码的功能。该窗体中,可以通过输入用户名和原密码,然后输入新密码和确认新密码,来修改用户的登录密码。这个窗体需要用到的控件有Label控件,TextBox控件,Button控件,Panel控件。在学生信息管理系统主页面中的菜单选项中找到系统管理,再次单击用户修改密码就会出现用户修改密码添加的窗口。

     

            上述三个子窗体中的取消按钮都是一样的代码写入:

            <span style="font-size:18px;">private void button2_Click(object sender, EventArgs e)
            {
                Close();
            }</span>

           经过上述的改动和子窗体的添加后的完整的Form1(学生信息管理系统登录窗口)的代码为:

    <span style="font-size:18px;">using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsForms
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string str = textBox1.Text;//获取你在textBox1中输入的信息
                Form2 ad = new Form2(str);//创建一个学生信息管理系统主界面的对象
                ad.Show();//点击确定后进入学生信息管理系统主界面
                this.Hide();//单击确定后隐藏登录窗口
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                Application.Exit();//点击取消退出整个程序
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                textBox1.Text = "";//这是清空你写入的用户名称
                textBox2.Text = "";//这是清空你写入的用户密码
            }
        }
    }</span></span>

             完整的Form2(学生信息管理系统主页面)的代码为:

    <span style="font-size:18px;"><span style="font-size:18px;">using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsForms
    {
        public partial class Form2 : Form
        {
            public Form2(string s)
            {
                InitializeComponent();
                tssl_name.Text = s;//将登陆窗口textBox1输入的信息传递给状态栏Text属性
            }
    
            private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Application.Exit();//单击主菜单中的退出我们退出整个程序
            }
    
            private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
    
            }
    
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                Children qq = new Children();//创建一个子窗体的实例
                qq.MdiParent = this;//要求子窗体的父窗体是MDI窗体
                qq.Show();
            }
    
            private void 学生信息ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Children1 c1 = new Children1();
                c1.MdiParent = this;
                c1.Show();
            }
    
            private void 用户信息ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Children2 c2 = new Children2();
                c2.MdiParent = this;
                c2.Show();
            }
    
            private void 用户密码修改ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Children3 c3 = new Children3();
                c3.MdiParent = this;
                c3.Show();
            }
        }
    }</span>

           完整的子窗体Children1(学生信息添加窗体)的代码为:

    <span style="font-size:18px;">using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsForms
    {
        public partial class Children1 : Form
        {
            public Children1()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                Close();
            }
        }
    }</span>

              完整的子窗体Children2(用户信息添加窗体)的代码为:

    <span style="font-size:18px;">using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsForms
    {
        public partial class Children2 : Form
        {
            public Children2()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                Close();
            }
    
            private void s(object sender, EventArgs e)
            {
            }
        }
    }</span>

                 完整的子窗体Children2(用户密码修改窗体)的代码为:

    <span style="font-size:18px;">using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsForms
    {
        public partial class Children3 : Form
        {
            public Children3()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                Close();
            }
        }
    }</span>

                在登录学生信息管理系统主页面打开子窗体的界面为:

             在文件中找到你所编写的程序,打开exe运行学生信息管理系统,检验是否与自己设计想象的有什么不同,不同的话进行修改调试,直到与自己预想的结果相吻合就可以了。

     


     





     


     

     

     

     

     


     

     

    展开全文
  • 1.在windows窗体中添加一个名为lblShow的Lable控件

    C#编程

    1.在windows窗体中添加一个名为lblShow的Lable控件
    然后在源代码视图中编辑如下代码
    using System;
    using System.Windows.Forms;
    namespace TestEnum
    {
        public partial class TestEnum : Form   //声明一个窗体类
        {
           //Visual Studio .Net自动生成的构造函数,后文示例将全部省略
            public TestEnum() 
            {
                InitializeComponent();
            }
      enum MyEnum { a = 101, b, c, d = 201, e, f };  //声明枚举型
            private void TestEnum_Load(object sender, EventArgs e)
            {
                MyEnum x = MyEnum.f;                 //使用枚举型定义枚举数x
                MyEnum y = (MyEnum)202;
                string result ="枚举数x的值为";
                result += (int)x;                   //将x转换为整数
                result += "\n枚举数y代表枚举元素" + y;
                lblShow.Text = result;
            }
        }
    }
    程序运行结果为显示:
    枚举数x的值为203
    枚举数y代表枚举元素e
    
    2.在windows窗体中添加一个名为lblShow的Lable控件
    然后在源代码视图中编辑如下代码
    using System;
    using System.Windows.Forms;
    namespace TestStru
    {
        public partial class TestStru : Form
        {
            struct Student                //声明结构型
            {
                //声明结构型的数据成员
                public int no;
                public string name;
                public char sex;
                public int score;//声明结构型的方法成员
                public string Answer()
                {
                    string result="该学生的信息如下:";
                    result += "\n学号:" + no;        //"\n"为换行符
                    result += "\n姓名:"+ name;
                    result += "\n性别:"+ sex;
                    result += "\n成绩:"+ score;
                    return result;                   //返回结果
                }
            }; 
    private void TestStru_Load(object sender, EventArgs e)
            {
                Student s;                           //使用结构型
                s.no = 101;
                s.name = "黄海";
                s.sex = '男';
                s.score = 540;
                lblShow.Text = s.Answer();    //调用s的Answer方法显示该生信息
                    lblShow.Text += "\n\n"+DateTime.Now; //显示当前时间
            }
        }
    }
    程序运行结果为显示:
    该学生的信息如下:
    学号:101
    姓名:黄海
    性别:男
    成绩:540
    
    2016-1-10 16:32:07


    展开全文
  • Winform之学生信息管理系统登陆窗体

    千次阅读 2015-04-22 21:00:38
    好吧,对这块的知识学习早已期待已久,感觉学习的进度还是慢了,最近一直在学习Winform,不得不说一些登陆窗体的设计,这几天算是小有收获,自己也看了许多这方面的知识,知道了要想做学生信息管理系统是一个漫长的...

            好吧,对这块的知识学习早已期待已久,感觉学习的进度还是慢了,最近一直在学习Winform,不得不说一些登陆窗体的设计,这几天算是小有收获,自己也看了许多这方面的知识,知道了要想做学生信息管理系统是一个漫长的过程,但是从今天起就来慢慢地进行学生信息管理系统的构建,此外还用到数据库的知识,打算着自己开始学数据库的知识,今天就来看看学生信息管理系统登录窗口的设计。下面图片的是样例:

     

           这方面的知识还是基于C#语言和.NET Framework平台的。自己所用的还是熟悉的开发环境VS2012,感觉VS2013和最近要出的VS2015没有什么大的改变,决定还是用VS2012来构建学生信息管理系统登录窗口。

           首先在VS2012下创建一个Windows窗体应用程序,起名字为WindowsForms,所要创建的登录窗口就是在这个基础上进行设计的,这个过程就不再详细的介绍。

           其次就是进行登录窗口的名字的修改,单击窗体设计,在属性的一栏找到Text(设置窗体名称)属性将名字改为学生信息管理系统,再次单击窗体设计即名字修改成功。

     

           然后就是对窗体的一些属性进行更改:1默认的情况下的属性MaximizeBox(窗口的最大化)和MinimizBox(窗口的最小化)是True,这个视情况而定,在这里将不予修改。2默认的情况下运行程序时窗体的属性StartPositio(开始位置)是WindowsDefaultLocation(随机位置),将其改为CenterScreen(屏幕的中央位置)。3默认的情况下属性ShowIcon(是否在窗体标题栏显示图标)是True以及属性ShowInTaskbas(是否窗体在Windows的任务栏显示)是True。4默认的情况下属性FormBorderStyle(窗口的模式)是Sizable(双线窗口大小可更改),将此改为FixedSingle(单线不可更改大小)。其他的属性视情况而定,自己需要修改的时候可进行更改,这个学生信息管理系统登陆窗口相对简单所以不进行过多的窗体设计。

           再者就是登陆窗口的背景,这个也是在属性中进行设置,找到属性BackgroundImage(背景图片),单击这个属性,会出现选择资源的对话框,自己进行图片的添加,把自己想要做背景的图片导入到框中即可,最后单击确定就完成了导入背景图片。

     

           再然后就是想在窗体设计上添加控件,在这里简单的登陆窗口需要用到三个控件,第一个用到的就是Lable,它的作用就是为控件运行时提供必要的文字性的说明或解释,向窗体添加两个Lable控件:第一个控件的属性Text改为登录名称:,第二个控件的属性Text改为登录密码:。第二个用到的就是TextBox,它的作用就是允许用户输入文本,并且提供密码的掩饰功能。向窗体添加两个TextBox控件,第一个控件为登录名称所输入的信息,第二个控件为登录密码所输入的文本,在这里要进行密码的掩码功能属性,单击控件,找到他的属性PasswordChar将其改为* 即可。第三个用到的控件就是Button,向窗体添加两个Button控件,第一个控件的属性Text改为确定,第二个控件的属性Text改为取消即可。向窗体添加控件的过程基本上算是完成。

     

           最后就是再次对比你所要设计的登陆窗口的设计图进行调试,直到正常执行为止。启动执行调试,这就完成了学生信息管理系统登录窗口的设计。

     

            以上的步骤是学生信息管理系统的简单的登录窗口,在以后的学习中还会进行必要的修改和设计,今天还是蛮有成就感的。自己也在想着设计一个简易计算器的窗体程序,现在也是对这方面的知识开了一个头。

         

     

    展开全文
  • 前言在上一节Python GUI项目实战(三)实现信息查询功能 我们实现了在主窗体中通过单条件查询或者组合查询进行学生信息...这一节我们将搭建一个显示学生详细信息的明细窗体,显示该学生的所有信息,只要双击表格中的某...

    前言

    在上一节Python GUI项目实战(三)实现信息查询功能 我们实现了在主窗体中通过单条件查询或者组合查询进行学生信息的筛选功能,系统能够在所有的数据中精确地找到某个具体的符合条件的学生信息。但是我们发现在主窗体中显示的都是概要信息,如果我们想要鼠标双击表格中的某一项就想查看某个学生的详细信息该怎么实现呢?

    这一节我们将搭建一个显示学生详细信息的明细窗体,显示该学生的所有信息,只要双击表格中的某一行就能打开。同时显示学生明细信息时我们的明细窗体要表现出三种不同的状态,同时应对显示、添加、和修改三种情况。在不同的状态下窗体显示的得标题是不同的。我们现在就开始着手操作吧这个项目吧~


    一、学生明细窗体GUI基本布局

    我们新建一个detailgui.py文件,显示学生明细信息。主要显示的内容有:学号、姓名、性别、出生日期、身份证号码、手机号码、邮箱地址、家庭住址、入学时间、专业、紧急联系人、紧急联系电话;其中性别我们通过Radiobutton的方式显示,其余都通过Label和Entry来显示。

    本文重点讲解的内容是逻辑与实现部分;关于tkinter布局的基础知识,这里主要用到的主要是Label标签和Entry输入框还有Radiobutton单选框的绘制,我们前面的文章Python基础学习笔记(十三)图形化界面Tkinter 已经做了具体的讲解,这里就不再继续重复介绍了。

    下面直接给出界面布局的代码:

    from tkinter import *from tkinter.ttk import *import osclass DetailWindow(Tk):    def __init__(self):        super().__init__()        self.title("学生明细信息")        self.geometry("600x500+600+150")        self.resizable(0,0) # 不能改变大小        # 加载控件        self.setup_UI()    def setup_UI(self):        # 设置style        self.Style01 = Style()        self.Style01.configure("title.TLabel",font=("微软雅黑",25,"bold"),foreground = "navy")        self.Style01.configure("TLabel", font=("微软雅黑", 16, "bold"), foreground="navy")        self.Style01.configure("TButton",font=("微软雅黑",16,"bold"),foreground = "navy")        self.Style01.configure("TEntry", font=("微软雅黑", 16, "bold"),width = 10)        self.Style01.configure("TRadiobutton",font=("微软雅黑",16,"bold"),foreground = "navy")        # 加载上面的banner        self.Login_image = PhotoImage(file = "."+os.sep+"img"+os.sep+"stu_detail_banner.png")        self.Label_image = Label(self,image = self.Login_image)        self.Label_image.pack()        # 添加一个title        self.var_title = StringVar()        self.Label_title = Label(self,text="==明细窗体==",style = "title.TLabel")        self.Label_title.place(x=380,y=20)        # 加载一个pane        self.Pane_detail = PanedWindow(width = 590,height = 380)        self.Pane_detail.place(x = 5,y = 88)        # 添加属性        # 第一排:学号        self.Label_sno = Label(self.Pane_detail,text = "学号:")        self.Label_sno.place(x=30,y=10)        self.var_sno = StringVar()        self.Entry_sno = Entry(self.Pane_detail,textvariable = self.var_sno,font=("微软雅黑", 16, "bold"),width = 10)        self.Entry_sno.place(x=80,y=8)        # 姓名        self.Label_name = Label(self.Pane_detail,text = "姓名:")        self.Label_name.place(x=220,y=10)        self.var_name = StringVar()        self.Entry_name = Entry(self.Pane_detail,textvariable = self.var_name,font=("微软雅黑", 16, "bold"),width = 10)        self.Entry_name.place(x=270,y=8)        # 性别        self.Label_gender = Label(self.Pane_detail,text = "性别:").place(x=410,y = 10)        self.var_gender = IntVar()        self.Radio_man = Radiobutton(self.Pane_detail,text="男",variable = self.var_gender,value = 1)        self.Radio_man.place(x=460,y = 10)        self.Radio_woman = Radiobutton(self.Pane_detail, text="女", variable=self.var_gender, value=0)        self.Radio_woman.place(x=510, y=10)        # 第二排:出生日期        self.Label_age = Label(self.Pane_detail,text="出生日期:")        self.Label_age.place(x=30,y=60)        self.var_age = StringVar()        self.Entry_age = Entry(self.Pane_detail,textvariable = self.var_age,font=("微软雅黑", 16, "bold"),width = 12)        self.Entry_age.place(x=110,y=58)        # 身份证号码        self.Label_id = Label(self.Pane_detail, text="身份证号码:")        self.Label_id.place(x=250, y=60)        self.var_id = StringVar()        self.Entry_id = Entry(self.Pane_detail, textvariable=self.var_id,font=("微软雅黑", 16, "bold"), width=19)        self.Entry_id.place(x=350, y=58)        # 第三排:手机号码        self.Label_mobile = Label(self.Pane_detail, text="手机号码:")        self.Label_mobile.place(x=30, y=110)        self.var_mobile = StringVar()        self.Entry_mobile = Entry(self.Pane_detail, textvariable=self.var_mobile,font=("微软雅黑", 16, "bold"), width=14)        self.Entry_mobile.place(x=110, y=108)        # 邮箱地址        self.Label_email = Label(self.Pane_detail, text="邮箱地址:")        self.Label_email.place(x=270, y=110)        self.var_email = StringVar()        self.Entry_email = Entry(self.Pane_detail, textvariable=self.var_email,font=("微软雅黑", 16, "bold"), width=19)        self.Entry_email.place(x=350, y=108)        # 第四排:家庭住址        self.Label_home = Label(self.Pane_detail, text="家庭住址:")        self.Label_home.place(x=30, y=160)        self.var_address = StringVar()        self.Entry_home = Entry(self.Pane_detail, textvariable=self.var_address,font=("微软雅黑", 16, "bold"), width=43)        self.Entry_home.place(x=110, y=158)        # 第五排:入学时间        self.Label_studyin = Label(self.Pane_detail, text="入学时间:")        self.Label_studyin.place(x=30, y=210)        self.var_studyin = StringVar()        self.Entry_studyin = Entry(self.Pane_detail, textvariable=self.var_studyin,font=("微软雅黑", 16, "bold"), width=12)        self.Entry_studyin.place(x=110, y=208)        # 专业:        self.Label_pro = Label(self.Pane_detail, text="专业:")        self.Label_pro.place(x=250, y=210)        self.var_pro = StringVar()        self.Entry_pro = Entry(self.Pane_detail, textvariable=self.var_pro,font=("微软雅黑", 16, "bold"), width=24)        self.Entry_pro.place(x=300, y=208)        # 第六排:紧急联系人        self.Label_emcon = Label(self.Pane_detail, text="紧急联系人:")        self.Label_emcon.place(x=30, y=260)        self.var_emcon = StringVar()        self.Entry_emcon = Entry(self.Pane_detail, textvariable=self.var_emcon,font=("微软雅黑", 16, "bold"), width=11)        self.Entry_emcon.place(x=120, y=258)        # 紧急联系电话        self.Label_emtel = Label(self.Pane_detail, text="紧急联系人电话:")        self.Label_emtel.place(x=250, y=260)        self.var_emtel = StringVar()        self.Entry_emtel = Entry(self.Pane_detail, textvariable=self.var_emtel,font=("微软雅黑", 16, "bold"), width=16)        self.Entry_emtel.place(x=380, y=258)        # 放置两个按钮        self.Button_save = Button(self,text = "保存",style = "TButton").place(x=400,y=472)        self.Button_exit = Button(self,text = "关闭",style = "TButton").place(x=502,y=472)if __name__ == '__main__':    this_window = DetailWindow()    this_window.mainloop()

    效果演示:

    feec3bdb1f06a2602455c07bf96e76df.png

    明细窗体的GUI框架

    二、加载明细窗体

    加载学生明细信息我们应该设置三种状态:查看、添加、修改;

    1. 功能需求

    • 在查看状态下,标题是:查看学生明细,各信息栏输入框中所有的信息都是只读状态,并且右下角的保存按钮处于隐藏状态;
    • 在添加状态下,标题是:添加学生明细,各信息栏输入框清空,右下角保存按钮可用;
    • 在修改状态下,标题是:修改学生明细,各信息栏除学号不能修改外,其余信息栏均可修改,并且右下角保存按钮可用。

    2. 触发条件

    我们实现查看学生明细信息的三种状态的触发条件:

    b5a0b45ab5fae12199bb030fc4d9806f.png

    3. 遇到问题

    为了能查看学生明细信息,我们要在主窗体中定义一个函数load_detail_window(),在此之前我们要导入detailgui模块,调用DetailWindow类;

    import detailguidef load_detail_window(self):    detail_window = detailgui.DetailWindow()

    接着,我们再定义一个add_student的函数,在这个函数中调用load_detail_window方法

    def add_student(self):    self.load_detail_window()

    然后在按钮中添加command参数,其值为add_student; 这样做似乎貌似实现了简单的加载学生明细窗体的功能,实际上当我们执行程序,点击添加学生按钮后,系统会报错

    _tkinter.TclError: image "pyimage4" doesn't exist

    这是什么原因呢?

    在tkinter里面有一个类Tk,其功能是产生一个主窗体,我们前面每次创建窗体时都用到了它。但是在tkinter里有一个规定,应用程序同时只能运行一个主窗体。而这里我们的主窗体一直在运行,是没有办法再加载一个主窗体(明细信息)的。如果想同时加载两个窗体,第二个窗体必须要以子窗体的形式打开,这里我们就可以使用Toplevel来创建子窗体。

    所以,detialgui的DetailWindow类所继承的类应该由Tk,换成Toplevel即可。 这时候又出现了一个小bug,pane与明细窗体发生了脱离,这是因为我们前面创建pane容器的时候忘记设置它的属主了,这里添加一个构建函数中添加一个self参数就可以了。现在点击添加学生按钮,就可以正常加载明细信息窗口了!

    f970d256f217fa02e0ccc4dfdaa6a34b.gif

    弹出明细窗体

    所以,出现这个问题的根源所在就是:使用Tk这个类实例化一个窗体,这个窗体是一个主窗体。已经实例化了一个主窗体,再实例化一个是不可以的。所以第二个窗体必须用Toplevel实例化。

    三、实现三种状态加载明细窗体

    1. 点击按钮触发

    前面我们已经实现了添加明细信息的功能,现在我们继续实现修改明细信息的功能。我们新定义一个update_student()函数:

    def update_student(self):    self.load_detail_window()

    然后在修改学生按钮中添加command参数即可。

    2. 双击表格触发

    我们想双击TreeView中的某一行表格,就能触发查看明细信息的功能,首先我们定义一个查看明细信息的方法view_student(),由于双击是一个事件,所以在调用函数的时候需要添加一个参数event

    def view_student(self,event):    self.load_detail_window()

    然后在 setup_UI()函数的结尾处,添加触发双击表格某一行的事件,写法是:使用bind()方法,第一个参数一定要以Double开头,体现是一个双击事件,第二个函数为对应的触发函数。

    self.Tree.bind("",self.view_student)

    效果演示:

    cc90619885d9688b460471b3dcad257b.gif

    双击表格任一行均可弹出明细窗体

    四、呈现三种不同的状态

    以上三种触发函数实现的都是同一种功能,然而我们想实现查看、添加、修改三种不同状态,那么怎样才能体现差异化呢?

    1.添加标志参数

    在实例化明细窗体的时候,添加一个标志参数action_flag,我们通过区分action_flag参数的值,来确定以什么样的模式进行加载。 这里我们规定:

    • 当action_flag = 1时,表示查看模式;
    • 当action_flag = 2时,表示添加模式;
    • 当action_flag = 3时,表示修改模式。

    2. 修改窗体标题

    我们在明细窗体的构造函数中,定义一个全局变量:

    self.flag = action_flag

    再定义一个修改窗体标题的函数:

    def load_windows_flag(self):    if self.flag == 1:        self.Label_title.configure(text="==查看学生明细==")    elif self.flag == 2:        self.Label_title.configure(text="==新建学生明细==")    elif self.flag == 3:        self.Label_title.configure(text="==修改学生明细==")

    创建好修改标题的函数后,不要忘了在构造函数中添加上:

    self.load_windows_flag()

    我们在主窗体函数中也定义一个全局变量,作为修改明细窗体标题的标志位:

    self.action_flag = 0

    然后在主窗体函数中,给load_detail_window()函数添加参数self.action_flag:

    def load_detail_window(self):    detail_window = detailgui.DetailWindow(self.action_flag)

    与此同时,add_student()、update_student()、view_student()三个方法也要做相应的修改:

    def add_student(self):    self.action_flag = 2    self.load_detail_window()def update_student(self):    self.action_flag = 3    self.load_detail_window()def view_student(self,event):    self.action_flag = 1    self.load_detail_window()

    这样三种不同的触发事件,对应的明细窗体标题也发生了相应的变化:

    21bdfdb7427a3248216d6a2c13d33e46.gif

    点击不同按钮明细窗体显示不同标题

    点击添加学生按钮,明细窗体标题显示“添加学生明细”;点击修改学生按钮,明细窗体标题显示“修改学生明细”;双击表格学生学生信息某一行,明细窗体标题显示“查看学生明细”。

    最后

    本节我们完成了明细窗体GUI的搭建,设置了明细窗体的查看模式、添加模式、和修改模式,并且实现了在不同触发按钮下同一个明细窗体显示不同的标题。希望小伙伴们不仅仅学习的同时,思考一下为什么要这么做?我们是怎么实现呈现三种不同窗体状态的,并且结合着前面的文章自己动手练一练,所有的数据源、素材和源码直接私信我,我发给你。

    本节的明细窗体GUI的搭建已经完成了,前期准备工作已经做好了,下一节我们就要正式将数据源学生信息填充进明细窗体中显示出来,敬请期待吧~

    小伙伴们觉得文章内容还不错的话,点赞、转发、关注安排一下^_^,感谢您的支持~

    展开全文
  • 列如:有一个班级的bpl和一个学生信息的bpl,两个都不是主窗体,如何在班级的学生列表中调用查看学生信息 项目中加入要使用的bpl uses要使用的单元 调用该单元的公开变量或函数 将application.handle设调用窗口...
  • 我这钻牛角的学习方法什么时候能改呢,一个劲的抠细节,我是个细节控吗? 总结一下这两天出现的问题,算是记录解决过程吧,最后争取再写一篇分类明确的总结。 第一个问题:用户定义类型未定义。 写了登录窗体...
  • 假设有“教师”、“学生”、“课程”三实体,教师的基本信息包括:工号、姓名、职称、工资,课程的基本信息包括:课程号、课程、学分数,学生的基本信息包括:学号、姓名、性别、年龄。系统必须满足以下要求: ...
  • 在我之前刚开始敲学生的时候我遇到了“夺命91”。也是让我头疼了挺久的! 问题:登录的时候显示实时错误’91’对象变量或with块变量未设置 If mrc.EOF Then 造成这问题的原因有很多,这回是因为以下三原因: ...
  • 电脑 win8.1 专业版 64位 vs 2013 + sql server2008 sql server2008安装教程:点击打开链接 sql server 2008常见问题以及解决方法:... 看了几天关于C#介绍的书后,boss开始让我自己创建一个C#窗体应用程序,连接数
  • //定义一个容器 final JTextField jtf1 = new JTextField(); //用户名文本框 final JPasswordField jpf1 = new JPasswordField(); //密码文本框 JLabel jl1 = new JLabel("用户名:"); //...
  • 建立一个学生表名字Student 双击窗体进入代码界面,最顶上输入: Imports System.Data.SqlClient '导入命名空间 窗体的代码: Public Class UserControl1 '系统自动生成的 Dim ds As DataSet = New DataSet '建立...
  • 知识点:创建Windows应用程序的方法,窗体的基本属性和方法、基本控件的使用、事件处理、消息框的使用 ...Windows应用程序由一个窗体组成。 1.1 应用程序和windows应用程序 应用程序:满足用户不...
  • 知识点:控件排列和对齐的方法、创建MDI窗体的方法、高级控件(工具条ToolStrip、状态条StatusStrip、图片框PictureBox、图片列表ImageList、定时器Timer)的使用、数据验证代码的编写、窗体间数据传递的方法 ...
  • 概述 WinForm是Windows Form的简称,是基于.NET Framework平台的客户端(PC软件)开发技术,一般使用C#编程。C# WinForm编程需要创建Windows窗体应用程序项目 .NET提供了大量Windows风格的控件和事件,我们...
  • C#简单窗体应用程序(

    万次阅读 多人点赞 2017-03-12 21:24:04
    例题:创建一个Windows窗体应用程序,在窗体中添加两个按钮,当单击第一个按钮时,显示“我来啦!”,当单击第二个按钮时,显示“我走啦!”。 第一步:创建项目; 文件→新建→项目;选择“项目类型”...
  • (学习目标:使用.net 窗体制作一个学生信息管理系统,满足学生信息、班级信息、年级信息的增删改查。) 第一天:建库 任务:在SQL Server中建一个小型的学生信息管理系统数据库,可以存放学生信息、班级信息、年级...
  • Microsoft Access 窗体

    2020-03-06 11:57:20
    文章目录窗体窗体控件实例 窗体 记录源:在窗体属性中设置->数据源,即窗体所要显示,控制的表格 窗体 窗体页眉 页面页眉(不常用) 主体 页面页脚(不常用) 窗体页脚 ...记录源 学生表 设...
  • 今天给大家更新一个综合实例,学生成绩管理系统。从需求分析、窗体应用程序的编写、运行结果来阐述整个过程 需求分析 首先先要进行需求分析,需求分析就是想清楚你写的窗体应用具体要实现哪些功能。最好把它用表格的...
  • 这是篇适合java白菜级别的窗口创建。形式最为普遍,只要知道知道一些java创建窗口的包等基础就行。
  • Java+学生信息管理系统+GUI+文件

    万次阅读 多人点赞 2019-07-05 20:10:03
    该系统可实现学生信息的增加,删除,修改,查询,并将学生信息存储在文件中 其中, 欢迎使用Markdown编辑器 你好! 这是你第次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以...
  • "{0}:\t语文{1}分\t数学{2}分\t英语{3}分\t总分:{4}\t平均分为:{5}" , _name, _chineseScore, _mathScore, _englishScore, SumScore(), Average()); } public char Level ( double score) { switch ...
  • 文章目录七、实现步骤(十)创建窗口界面...目前只是创建一个可以显示出来和关闭的主界面窗口,等到将各个功能模块窗口界面都完成了,我们会修改代码,给出主窗口界面的最终版。 MainFrame继承JFrame类 添加构造方法
  • Winform之学生信息管理系统主页面

    千次阅读 2015-04-26 13:45:51
     1登录窗口的最大化和最小化,这一般的登录窗口不需要,因此我们也不做,单击学生信息管理系统的窗体设计找到属性MaximizeBox和属性(窗口的最大化)和MinimizBox(窗口的最小化)是True,把它们改False。...
  • C#学生信息管理系统

    千次阅读 2020-02-29 08:59:21
    题目:学生信息管理系统 ... 某学校要实现班级学生信息管理,要求使用.NET WinForms技术完成一个班级学生信息管理系统的开发,其中保存在SQL Server 2008数据库中的学生信息如下: 数据库 studen...
  • 浅谈继承窗体

    2019-10-05 03:09:57
    我们完全可以一个一个的添加窗体,然后将其中摆放好的控件复制到另一个窗体上,这样无可非议。不过总是粘贴复制就会有不好的味道在里面。 其实窗体也可以继承。今天就小谈下继承窗体。 我稍稍归纳了一下,在我们...
  • access窗体

    2021-07-26 21:40:16
    标题是用户可见的内容,名称不可见,可以理解id,可以使用id来用代码写这控件的功能 在添加标签的时候要先添加文字,否则是添加不上的。 二、文本框控件 文本框是主体,标签是附带成分。文本框用户可以输入...
  • JAVA期末大作业之学生信息管理简洁版系统

    万次阅读 多人点赞 2018-07-01 18:42:01
    一、界面化登录窗体,实现主要的界面布局//package newpackage; import javax.swing.*; import java.awt.*; import java.awt.event.*;...public class StudentFrame extends JFrame { //创建一个登录界面 Vect...
  • 这篇文章是一个Java新手写的一个相对来说比较简单的程序,只要掌握基本的Java中图形界面设计(GUI)和Java(MYSQL)数据库(基本上看书和一些教学视频就能懂),让你清晰明了的看懂这个程序,由于是一个新手所写,有...
  • 数据库课设之学生信息管理系统

    万次阅读 多人点赞 2019-07-13 17:31:10
    数据库课设之学生信息管理系统...本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统 的主要功能有: a、学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。 b、学...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,037
精华内容 1,614
关键字:

创建一个名为学生信息的窗体