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自动化办公 编程工具

相关推荐
MerryLuna1 分钟前
专业的EUDR机构
大数据·人工智能·python
ueotek26 分钟前
Ansys Zemax丨在 OpticStudio 中拟合折射率数据
python·软件工程·ansys·光学仿真·光学设计·zeamx
czq_268671948729 分钟前
Python打卡第40天
开发语言·python
不爱吃鱼的蔓热莓31 分钟前
Autosar之根据ARXML中报文信息生成SWC(二)
开发语言·python
奈葵34 分钟前
Python语句
开发语言·python
随性而行3601 小时前
企业微信API接口开发实战:如何实现消息回调接收与业务事件处理?
java·前端·python·微信·机器人·企业微信
言乐61 小时前
Python于LOLM针对伊泽瑞尔的数据分析
开发语言·python·机器学习·数据分析·pandas
打工仔折腾 AI1 小时前
Qt网络编程实战:UDP、TCP到HTTP的落地经验与选型
网络·人工智能·后端·python·qt·udp·ai agent 实战
打工仔折腾 AI1 小时前
SQL 编辑器不是高级记事本:KStudio 与 KSQL Developer 的建表与增删改查手法
数据库·人工智能·后端·python·sql·编辑器·ai agent 实战
逸A1 小时前
携程app逆向那些事(ai agent能力偏弱时)
人工智能·python·安全