tkinterFrame框架+标签框架LabelFrame+Toplevel窗口的使用
1.在tkinter中,Frame是一个容器小部件用于组织和管理其他小部件。它可以作为一个独立的可见区域,也可以作为其他小部件的父容器。
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 可以方便地将多个控件组织在一起,并为它们提供一个视觉上的分组标记。
您提交的内容是:
李白
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
# @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 窗口是一个弹出窗口,拥有自己的标题栏、边框等部件,并且可以独立于主窗口进行操作。
# @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自动化办公 编程工具
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。