tkinterFrame框架+标签框架LabelFrame+Toplevel窗口的使用

1.在tkinter中,Frame是一个容器小部件用于组织和管理其他小部件。它可以作为一个独立的可见区域,也可以作为其他小部件的父容器。

python 复制代码
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox as mb

m = tk.Tk()
m.title("tkinter Listbox")
m.geometry('500x300')
m.resizable(0, 0)

lb = tk.Label(text='Programming Languages', font=('times', 12, 'bold'), fg='#CD7054')
lb.pack()

frame1 = tk.Frame(m)
frame1.pack()

varLb = tk.Label(frame1, text='Popular Languages', font=('times', 10, 'bold'), fg='orange')
plotLb = tk.Label(frame1, text='Your Languages', font=('times', 10, 'bold'), fg='orange')
varLb.grid(row=0, column=0, columnspan=3, padx=5)
plotLb.grid(row=0, column=6, columnspan=3, padx=5)

lbox = tk.Listbox(frame1, selectmode=tk.EXTENDED, height=8)
lbox.grid(row=1, column=0, columnspan=3, rowspan=5, sticky=tk.E, padx=10)
items = ["c", "c++", "c#", "go", "java", "javascript", "php", "python", "r", "swift"]
for i in items:
    lbox.insert('end', i)  #
list = []
langCnt = 0


def Add():
    cursel = lbox.curselection()
    curvar = lkLbox.get(0, tk.END)
    isexist = False
    if len(cursel) > 0:
        for i in cursel:
            lkLbox.insert('end', lbox.get(i))
            if lbox.get(i) in curvar:
                isexist = True
    if isexist:
        mb.showinfo('info', 'Add existing language(s)!')


def Del():
    cursel = lkLbox.curselection()
    if len(cursel) > 0:
        for i in range(len(cursel) - 1, -1, -1):
            lkLbox.delete(cursel[i])


def Clr():
    lkLbox.delete(0, tk.END)


def Set():
    global list
    global curCnt
    list.clear()
    varturp = lkLbox.get(0, tk.END)
    if len(varturp) > 0:
        for var in varturp:
            list.append(var)
    else:
        mb.showwarning('Warning', 'No language is Selected!')
    langCnt = cntCbox.current()
    print(list)
    print(langCnt)


btnAdd = tk.Button(frame1, width=6, text='>>', font=('times', 12, 'bold'), fg='green', command=Add)
btnAdd.grid(row=2, column=4, padx=10)

btnDel = tk.Button(frame1, width=6, text='Del', font=('times', 12, 'bold'), fg='red', command=Del)
btnDel.grid(row=3, column=4, padx=10)

btnClr = tk.Button(frame1, width=6, text='Clr', font=('times', 12, 'bold'), fg='red', command=Clr)
btnClr.grid(row=4, column=4, padx=10)

lkLbox = tk.Listbox(frame1, selectmode=tk.EXTENDED, height=8)
lkLbox.grid(row=1, column=6, columnspan=3, rowspan=5, sticky=tk.W, padx=10)

frame2 = tk.Frame(m)
frame2.pack(pady='10px')

curCntLb = tk.Label(frame2, text='Languages number you master:', font=('times', 10, 'bold'), fg='purple')
curCntLb.grid(row=0, column=0, columnspan=3, padx=5)

cntCbox = ttk.Combobox(frame2)
cntCbox['value'] = ('0', '1', '2', '3', '4', '5', '5+')
cntCbox.current(1)
cntCbox.grid(row=0, column=5, columnspan=3, padx=5)

btnSet = tk.Button(m, text='Apply', font=('times', 12, 'bold'), fg='blue', command=Set)

btnSet.pack(side=tk.BOTTOM, pady=5)
m.mainloop()

2.LabelFrame 控件具有框架功能以及显示标签的功能。默认情况下,它会在其子组件的周围绘制一个边框,并在其上方显示一个文本标题。使用 LabelFrame 可以方便地将多个控件组织在一起,并为它们提供一个视觉上的分组标记。

您提交的内容是:

李白

杜甫

python 复制代码
import tkinter as tk

def get_msg():
    x = ""
    for j in cheakboxs:
        # 这里实际上是cheakboxs[j].get() == True
        # 如果被勾选的话传回来的值为True
        # 如果没有被勾选的话传回来的值为False
        if cheakboxs[j].get():
            x = x + persons[j] + "\n"
    print('您提交的内容是: ')
    print(x)
# 创建主窗口
root = tk.Tk()

# LabelFrame标签框架
labelFrame = tk.LabelFrame(root, text='选择最喜欢的诗人')
persons = {0: '李白', 1: '杜甫', 2: '李清照', 3: '苏轼', 4: '辛弃疾'}
# 这里负责给予字典的键一个False或者True的值,用于检测是否被勾选
cheakboxs = {}
for i in range(len(persons)):
    # 这里相当于是{0: False, 1: False, 2: False, 3: False, 4: False}
    cheakboxs[i] = tk.BooleanVar()
    # 只有被勾选才变为True
    tk.Checkbutton(labelFrame, text=persons[i], variable=cheakboxs[i]).grid(row=i + 1, sticky=tk.W)

labelFrame.pack(padx=10, pady=5, ipadx=5, ipady=5)
button = tk.Button(root, text="提交", width=10, command=get_msg)
button.pack()
root.mainloop()

示例2

python 复制代码
# @Author : 小红牛
# 微信公众号:WdPython
import tkinter
# 创建主窗口
root = tkinter.Tk()
textFirst = "欢迎登录"
photo = tkinter.PhotoImage(file='1.png')
Logo = tkinter.Label(root, image=photo, text=textFirst, compound=tkinter.BOTTOM)
Logo.pack()

# LabelFrame标签框架
labelFrame = tkinter.LabelFrame(root, text="登录框")

accountLabel = tkinter.Label(labelFrame, text="账号")
accountLabel.grid(row=0, column=0)

accountEntry = tkinter.Entry(labelFrame)
accountEntry.grid(row=0, column=1)

passWd = tkinter.Label(labelFrame, text="密码")
passWd.grid(row=1, column=0)

passWdEntry = tkinter.Entry(labelFrame, show="*")
passWdEntry.grid(row=1, column=1)

labelFrame.pack(padx=10, pady=5, ipadx=5, ipady=5)

root.mainloop()

3.Toplevel 是 Tkinter GUI 库中的一个控件,它代表一个独立的顶级窗口。与主窗口(通常是 Tk() 实例)不同,Toplevel 窗口是一个弹出窗口,拥有自己的标题栏、边框等部件,并且可以独立于主窗口进行操作。

python 复制代码
# @Author : 小红牛
# 微信公众号:WdPython
import tkinter as tk

# 创建主窗口
root = tk.Tk()
root.title("Main Window")
root.geometry('160x80')

# 创建一个按钮,点击时打开Toplevel窗口
def open_toplevel():
    top = tk.Toplevel(root)
    top.geometry('200x100')
    top.title("Toplevel Window")
    label = tk.Label(top, text="This is a toplevel window!")
    label.pack(pady=20)


# 创建按钮并添加到主窗口
button = tk.Button(root, text="Open Toplevel", command=open_toplevel)
button.pack(pady=20)

# 启动主循环
root.mainloop()

完毕!!感谢您的收看

----------★★历史博文集合★★----------
我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具

相关推荐
jarreyer17 分钟前
python离线包安装方法总结
开发语言·python
码银34 分钟前
【python】基于 生活方式与健康数据预测数据集(Lifestyle and Health Risk Prediction)的可视化练习,附数据集源文件。
开发语言·python·生活
星期天要睡觉2 小时前
大模型(Large Language Model, LLM)——什么是大模型,大模型的基本原理、架构、流程
人工智能·python·ai·语言模型
Q_Q19632884752 小时前
python+uniapp基于微信美食点餐系统小程序
spring boot·python·微信·django·flask·uni-app·node.js
KIKIiiiiiiii2 小时前
微信个人号开发中如何高效实现API二次开发
java·前端·python·微信
山顶听风2 小时前
Flask应用改用Waitress运行
前端·笔记·python·flask
·s.*3 小时前
so-arm101部署操作
python
java1234_小锋3 小时前
TensorFlow2 Python深度学习 - 模型保存与加载
python·深度学习·tensorflow·tensorflow2
深蓝电商API3 小时前
用 Selenium 搞定动态网页:模拟点击、滚动、登录全流程
爬虫·python·selenium
王六岁3 小时前
🐍 前端开发 0 基础学 Python 入门指南:数字与字符串篇
前端·python·全栈