python之Tkinter运用(Combobox,RadioButton,CheckButton,Button)

本文将介绍Tkinter中部分组件用法

代码运行效果:

在这里插入图片描述
可完成对考生姓名,省份城市,本专科类别,英语专业的录入

因为需要在图像化界面上显示输出结果,所以先构造一个Frame框lab1,以便与后续输出结果部分的lab2互不干扰

lab1 = tk.Frame(win)

l1 = tk.Label(lab1,text = '姓名',width = 10,height = 2,font = ('楷体',15)).grid(row = 0,column = 0)
l2 = tk.Label(lab1,text = '省份',width = 10,height = 2,font = ('楷体',15)).grid(row = 1,column = 0)
l3 = tk.Label(lab1,text = '城市',width = 10,height = 2,font = ('楷体',15)).grid(row = 1,column = 2 )
l4 = tk.Label(lab1,text = '请选择考生科目类别:',width = 20,height = 2,font = ('楷体',15))
e1 = tk.Entry(lab1)
l4.grid(row = 2, column = 0)
e1.grid(row = 0, column = 1)

lab1.grid()

如下图:
在这里插入图片描述

(下拉框Combobox,单选按钮RadioButton,多选按钮CheckButton,获取信息 和 删除信息的按扭Button 这些部分代码将在后续看到)

接着构造lab2:

lab2 = tk.Frame(win)
listbox = tk.Listbox(lab2,width = 80,height = 60,selectmode = 'multiple')
lab2.grid()
listbox.grid(row = 5)

lab2用来显示添加入的学生信息
在这里插入图片描述

下拉框Combobox部分

因为省份要和城市相对应,即省份更换城市也随即更换
所以建立一个省份城市的字典,省份是键,城市是值,城市利用数组存放

#省市是键 城市是值 键值匹配
def Func(event):
    city_list = province_city_dict[province.get()]
    city_box["values"] = city_list


#省份变化,城市也跟着变,所以建立一个province_city_dict字典
city_null = [' ']
city_BJ = ['朝阳区', '顺义区', '昌平区']
city_NMG = ['呼和浩特市', '包头市', '鄂尔多斯市']
city_LN = ['沈阳市', '大连市', '抚顺市']
province_city_dict ={"": city_null,
                     "北京市" : city_BJ,
                     "内蒙古自治区" :  city_NMG,
                     "辽宁省" : city_LN}
province_keys = list(province_city_dict.keys())


#构造省份combobox
province = tk.StringVar()
province_box = ttk.Combobox(lab1,width = 20,textvariable = province,state = "readonly")
province_box["values"] = province_keys
province_box.grid(row = 1,column = 1)
province_box.current(0)
province_box.bind("<<ComboboxSelected>>",Func)

#构建城市combobox
city = tk.StringVar()
city_box = ttk.Combobox(lab1,width = 20,textvariable = city,state = "readonly")
city_box["values"] = province_city_dict[province.get()]
city_box.grid(row = 1,column = 3)

在这里插入图片描述

单选按钮Radiobutton

v1 = tk.IntVar()
degrees = ['本科生','专科生']
for i in range(0,2):
    c1 = tk.Radiobutton(lab1, text = degrees[i],
                                 variable = v1, value = i)
    c1.grid(row = 2, column = i+1)

在这里插入图片描述

多选按钮CheckButton

Checkbutton(多选按钮)组件用于实现确定是否选择的按钮。Checkbutton 组件可以包含文本或图像,你可以将一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。
Checkbutton 组件被用于作为二选一的按钮,在此处就被用作选定是否为英语专业考生
在这里插入图片描述
当选中(打勾)时返回值为1,没选中自动为0

v2 = tk.IntVar()
c3 = tk.Checkbutton(lab1,text = '是否为英语专业',
                      variable = v2,
                      onvalue = 1,  #选中为1
                      offvalue = 0,)#没选中为0
c3.grid(row=3,column = 0)

展示学生信息

#define函数展示学生的信息
def show_news():
    name = e1.get()
    if v1.get() == 0:
        degree = "本科"
    elif v1.get() == 1:
        degree = "专科"

    if (v2.get() == 1):                      #如果Checkbutton打勾返回值为1
        profession = "是"
    else :
        profession = "否"
    Str = '学生姓名:' +e1.get()+' 省份:'+province.get()+' 城市:'+city.get()+\
          ' 本科专科类别:'+degree+' 是否英语考生:'+profession
    if not name == '':    #当name不为空时,才能插入
        index = listbox.curselection()
        if len(index) > 0:
            listbox.insert(index[0], Str)
        else:
            listbox.insert("end", Str)
    e1.delete(0,'end')
    
tk.Button(lab1,text="获取信息", width=10, command = show_news).grid(row = 3, column = 1)

在这里插入图片描述

删除学生信息

#删除一个学生的信息
def delete_news():
    index = listbox.curselection()[::-1]  #index从第一个学生读到最后一个
    for i in index:
        listbox.delete(i)
tk.Button(lab1,text="删除信息", width=10, command = delete_news).grid(row = 3,column = 2)

在这里插入图片描述

完整代码如下

import tkinter as tk
from tkinter import ttk

win = tk.Tk()
lable = tk.Label()
win.title('考生信息注册')
win.geometry('700x500')

#构造两个Frame框lab1,lab2
lab1 = tk.Frame(win)

l1 = tk.Label(lab1,text = '姓名',width = 10,height = 2,font = ('楷体',15)).grid(row = 0,column = 0)
l2 = tk.Label(lab1,text = '省份',width = 10,height = 2,font = ('楷体',15)).grid(row = 1,column = 0)
l3 = tk.Label(lab1,text = '城市',width = 10,height = 2,font = ('楷体',15)).grid(row = 1,column = 2 )
l4 = tk.Label(lab1,text = '请选择考生科目类别:',width = 20,height = 2,font = ('楷体',15))
e1 = tk.Entry(lab1)
l4.grid(row = 2, column = 0)
e1.grid(row = 0, column = 1)

lab1.grid()

lab2 = tk.Frame(win)
listbox = tk.Listbox(lab2,width = 80,height = 60,selectmode = 'multiple')
lab2.grid()
listbox.grid(row = 5)

#define函数展示学生的信息
def show_news():
    name = e1.get()
    if v1.get() == 0:
        degree = "本科"
    elif v1.get() == 1:
        degree = "专科"

    if (v2.get() == 1):                      #如果Checkbutton打勾返回值为1
        profession = "是"
    else :
        profession = "否"
    Str = '学生姓名:' +e1.get()+' 省份:'+province.get()+' 城市:'+city.get()+\
          ' 本科专科类别:'+degree+' 是否英语考生:'+profession
    if not name == '':    #当name不为空时,才能插入
        index = listbox.curselection()
        if len(index) > 0:
            listbox.insert(index[0], Str)
        else:
            listbox.insert("end", Str)
    e1.delete(0,'end')


#删除一个学生的信息
def delete_news():
    index = listbox.curselection()[::-1]  #index从第一个学生读到最后一个
    for i in index:
        listbox.delete(i)

#省市是键 城市是值 键值匹配
def Func(event):
    city_list = province_city_dict[province.get()]
    city_box["values"] = city_list


#省份变化,城市也跟着变,所以建立一个province_city_dict字典
city_null = [' ']
city_BJ = ['朝阳区', '顺义区', '昌平区']
city_NMG = ['呼和浩特市', '包头市', '鄂尔多斯市']
city_LN = ['沈阳市', '大连市', '抚顺市']
province_city_dict ={"": city_null,
                     "北京市" : city_BJ,
                     "内蒙古自治区" :  city_NMG,
                     "辽宁省" : city_LN}
province_keys = list(province_city_dict.keys())


#构造省份combobox
province = tk.StringVar()
province_box = ttk.Combobox(lab1,width = 20,textvariable = province,state = "readonly")
province_box["values"] = province_keys
province_box.grid(row = 1,column = 1)
province_box.current(0)
province_box.bind("<<ComboboxSelected>>",Func)

#构建城市combobox
city = tk.StringVar()
city_box = ttk.Combobox(lab1,width = 20,textvariable = city,state = "readonly")
city_box["values"] = province_city_dict[province.get()]
city_box.grid(row = 1,column = 3)

v1 = tk.IntVar()
v2 = tk.IntVar()

degrees = ['本科生','专科生']
for i in range(0,2):
    c1 = tk.Radiobutton(lab1, text = degrees[i],
                                 variable=v1, value=i)
    c1.grid(row=2, column=i+1)

c3 = tk.Checkbutton(lab1,text = '是否为英语专业',
                      variable = v2,
                      onvalue = 1,
                      offvalue = 0,)
c3.grid(row=3,column = 0)

tk.Button(lab1,text="获取信息", width=10, command = show_news).grid(row = 3, column = 1)
tk.Button(lab1,text="删除信息", width=10, command = delete_news).grid(row = 3,column = 2)

win.mainloop()


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python tkinter可以通过使用RadiobuttonCheckbutton来创建选择项。 Radiobutton是一组互斥的按钮,只能选择其中一个。可以使用var变量来跟踪选中的按钮。 示例代码: ``` from tkinter import * root = Tk() var = StringVar() Radiobutton(root, text="选项1", variable=var, value="选项1").pack() Radiobutton(root, text="选项2", variable=var, value="选项2").pack() Radiobutton(root, text="选项3", variable=var, value="选项3").pack() root.mainloop() ``` Checkbutton是一组独立的复选框,可以选择多个。可以使用var变量来跟踪选中的复选框。 示例代码: ``` from tkinter import * root = Tk() var1 = IntVar() var2 = IntVar() var3 = IntVar() Checkbutton(root, text="选项1", variable=var1).pack() Checkbutton(root, text="选项2", variable=var2).pack() Checkbutton(root, text="选项3", variable=var3).pack() root.mainloop() ``` ### 回答2: Pythontkinter可以通过多种方式来做选择项。 最常见的方法就是使用tkinter中的`Checkbutton`和`Radiobutton`来创建多选项和单选项的选择框。可以先通过`Checkbutton`和`Radiobutton`创建相应的控件,并通过`variable`参数来指定变量,使得选中状态可以通过变量的值来判断。可以使用`get()`方法获取当前选中的项。 例如,可以通过以下代码创建一个含有三个选项的单选框: ```python import tkinter as tk root = tk.Tk() # 创建一个StringVar变量,用于存储选项 selected_option = tk.StringVar() # 创建三个Radiobutton,并绑定到selected_option变量 rb1 = tk.Radiobutton(root, text="Option 1", variable=selected_option, value="option1") rb2 = tk.Radiobutton(root, text="Option 2", variable=selected_option, value="option2") rb3 = tk.Radiobutton(root, text="Option 3", variable=selected_option, value="option3") rb1.pack() rb2.pack() rb3.pack() root.mainloop() ``` 除了使用内建的控件外,还可以自定义控件,例如使用`Listbox`来创建一个多选项的列表框。可以通过设置`selectmode`参数为`multiple`来实现多选。可以使用`curselection()`方法获取当前选中的项。 以下是一个示例: ```python import tkinter as tk root = tk.Tk() # 创建一个Listbox,并设置为多选模式 listbox = tk.Listbox(root, selectmode=tk.MULTIPLE) listbox.pack() # 添加选项到Listbox中 listbox.insert(tk.END, "Option 1") listbox.insert(tk.END, "Option 2") listbox.insert(tk.END, "Option 3") # 获取当前选中的项 def get_selected(): selection = listbox.curselection() for i in selection: print(listbox.get(i)) # 创建一个按钮,用于获取选中项 button = tk.Button(root, text="Get Selected", command=get_selected) button.pack() root.mainloop() ``` 除了以上提到的控件外,tkinter还有其他一些选择项的控件,例如`OptionMenu`、`Combobox`等。根据具体的需求,可以选择适合的控件来实现选择项的功能。 ### 回答3: Python自带的Tkinter模块是一个用于创建图形用户界面(GUI)的工具包。在Tkinter中,我们可以通过添加选择项来实现用户的选择功能。 首先,我们需要导入Tkinter模块: ```python import tkinter as tk ``` 然后,我们创建一个主窗口对象: ```python window = tk.Tk() ``` 接下来,我们可以使用Tkinter中的特定组件来添加选择项,比如使用Checkbutton组件来创建多个复选框,让用户可以选择多个选项: ```python # 创建复选框,并指定其标签和变量 checkbox1 = tk.Checkbutton(window, text="选项1") checkbox2 = tk.Checkbutton(window, text="选项2") checkbox3 = tk.Checkbutton(window, text="选项3") # 将复选框放置在窗口中的适当位置 checkbox1.pack() checkbox2.pack() checkbox3.pack() ``` 我们也可以使用Radiobutton组件来创建单选框,让用户只能从多个选项中选择一个: ```python # 创建单选框,并指定其标签、变量和值 radio1 = tk.Radiobutton(window, text="选项1", variable=var, value=1) radio2 = tk.Radiobutton(window, text="选项2", variable=var, value=2) radio3 = tk.Radiobutton(window, text="选项3", variable=var, value=3) # 将单选框放置在窗口中的适当位置 radio1.pack() radio2.pack() radio3.pack() ``` 最后,我们需要运行窗口的主循环以显示选择项并处理用户的选择: ```python window.mainloop() ``` 通过上述代码,我们可以使用PythonTkinter模块创建选择项的图形用户界面。用户可以通过勾选复选框或选择单选框来进行自己的选择。根据实际需求,我们可以进一步添加其他组件和功能来增强用户选择项的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值