tkinter的Frame即容器,在容器内部好像不能再嵌套一个Frame。
-
用Tkinter打造GUI开发工具(10)Tkinter的Frame框架部件
2019-04-08 23:17:58用Tkinter打造GUI开发工具(10)Tkinter的Frame框架部件 Frame框架部件是Tkinter的容器部件,负责安排其它部件的位置,Frame组件采用在屏幕上的矩形区域组织布局,并提供其它部件的填充,也包括Frame框架部件本身,...用Tkinter打造GUI开发工具(10)Tkinter的Frame框架部件
Frame框架部件是Tkinter的容器部件,负责安排其它部件的位置,Frame组件采用在屏幕上的矩形区域组织布局,并提供其它部件的填充,也包括Frame框架部件本身,一个框架也可以用来作为一个基础类,以实现复杂的构件。
窗口画面布局过程:
首先建立布局,即主窗口布局。用不同颜色和大小的Frame类进行填充,调整位置直到自己满意。
然后设计不同功能的子窗口,子窗口就是Frame类,各种小部件,例如Label,Button等,放在其中,调整好容器大小和位置。
最后将需要的Frame类显示到主窗口中。根据需要可以程序控制不同功能的Frame类显示或隐藏到对应的主窗口布局中。
Frame语法格式:
frame = tk.Frame ( master, option, … )
参数master 这代表了父窗口。options是这个部件的属性选项列表。
我们看一个简单 Frame的例子,这个例子主要看borderwidth 和relief的效果。# -*- coding: utf-8 -*- import tkinter as tk #装载tkinter模块,用于Python3 root=tk.Tk() #创建Tkinter主窗口 root.title("Frame演示") labels=[] #标签列表 reliefs=[tk.FLAT,tk.SUNKEN,tk.RAISED,tk.GROOVE,tk.RIDGE] i=0 for color in ['blue','yellow','red','purple','pink']: f = tk.Frame(root, borderwidth=1,bg=color,relief=reliefs[i],bd=20,width=100,height=100,container=True) f.pack(side=tk.LEFT) i+=1 root.mainloop() # 进入消息循环
程序运行结果出现下图。
Frame框架部件,通常用来布局规划。我们想把一个框架分成上下2个子框架,就可以使用Frame框架部件的嵌套来实现。我们在HP_tk2.py中设计了一个View类,kind参数可选“口”,“日”,“目”,orient参数决定垂直或水平方向。
新View的属性:
1)View.m 表示划分了几个窗口,如果kind=‘目’, View.m=3。
2)访问这些窗口用。
a. 因为m=3,窗口有 View.v1 ,View.v2,View.v3。
b. 因为m=3,窗口有 View.v[0] ,View.v[1],View.v[2]。
c. kind=‘目’,因此窗口有View.top ,View.center,View.bottom。
3)View窗口可以嵌套,每个子窗口都能做其它View窗口的上级master的入口。即View容器无限嵌套。用户要记住每层的窗口名字,通过名字来访问。
每个子窗都是容器,因此也可以通过类BackPicture,来放置一张图片。下面给出示例程序。
# -*- coding: utf-8 -*- import tkinter as tk #装载tkinter模块,用于Python3 from HP_tk2 import * #荷蒲tkinter增强模块 root=tk.Tk() #创建Tkinter主窗口 root.title("View演示,kind=目,orient=tk.VERTICAL") width=500 #把窗口宽度(单位:像素)500赋值给变量width height=200 #把窗口高度(单位:像素)200赋值给变量height x,y=150,250 #给屏幕坐标(x,y)赋值(150,250) root.geometry('{}x{}+{}+{}'.format(width,height, x, y)) #改变窗口位置和大小 v=View(root,bg='red',kind='目',orient=tk.VERTICAL) #把主窗划分为3 v.v1['bg']='blue' v.v2['bg']='yellow' v.v3['bg']='green' v2=View(v.left,bg='green',kind='日') #在子窗1划分 v3=View(v.center,bg='red',kind='目') #在子窗2划分 v4=View(v.right,bg='blue',kind='目',orient=tk.VERTICAL) #在子窗3划分 v4.right['bg']='yellow' #把最右面窗口底色改为黄色 root.mainloop() # 进入消息循环
程序运行结果.
使用Frame框架部件更容易规划窗口布局.最近又继续深化学习Tkinter技术,又实现了2个小功能.距离可视化设计又进了一步.
1.移动Tkinter控件操作.
2.调整tkinter控件的大小.
-
Python用Tkinter的Frame实现眼睛护士的倒计时黑色屏幕
2014-01-06 16:40:01import Tkinter,time class MyFrame(Tkinter.Frame): def __init__(self): Tkinter.Frame.__init__(self) self.grid() self.canvas = Tkinter.Canvas(self, bg='black',width=selfimport Tkinter,time class MyFrame(Tkinter.Frame): def __init__(self): Tkinter.Frame.__init__(self) self.grid() self.canvas = Tkinter.Canvas(self, bg='black',width=self.winfo_screenwidth(),height=self.winfo_screenheight()) self.canvas.pack() self.top = self.winfo_toplevel() # self.top.update_idletasks() self.top.overrideredirect(True) self.exitButton=Tkinter.Button(self,text='Exit',command=self.doExit) self.exitButton.pack() self.Label1=Tkinter.Label(self,text='Hello') self.Label1.pack() self.exitButton.config() # self.pack(fill='both') self.trickit(5) app.mainloop() def doExit(self): pather=self.winfo_parent() pather.quit() self.quit() def trickit(self,num): for j in range(num,0,-1): self.Label1["text"]=j self.update() time.sleep(1) self.doExit()
还没完工,倒计时没显示出来
改进版的:
import Tkinter,sys,time class BeBig(): root=Tkinter.Tk() Label1=Tkinter.Label(root,text=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) def beBig(self): self.root.minsize(self.root.winfo_screenwidth(), self.root.winfo_screenheight()) #self.root.geometry('300x200-100-100') self.root.config(bg='black') self.Label1.pack() topTitle=self.root.winfo_toplevel() topTitle.overrideredirect(True) self.trickit(5) self.root.mainloop() def trickit(self,num): for j in range(num,0,-1): self.Label1["text"]=j self.root.update() time.sleep(1) self.root.destroy() beBig=BeBig() beBig.beBig()
-
Python_给tkinter的frame加滚动条
2018-02-17 09:56:11问题背景:当界面需要显示的内容较多时,需要用到滚动条Scrollbar,官方文档说Scrollbar只能与以下控件(canvas, entry, listbox, text)相结合。但是,如果我想让Scrollbar和frame相结合呢? 解决办法是:把...问题背景:当界面需要显示的内容较多时,需要用到滚动条Scrollbar,官方文档说Scrollbar只能与以下控件(canvas, entry, listbox, text)相结合。但是,如果我想让Scrollbar和frame相结合呢?
解决办法是:把frame放在canvas里面(比如填满整个canvas),canvas与scrollbar结合,这样滚动canvas就等于滚动frame了。
举个栗子
canvas=Canvas(root,width=200,height=180,scrollregion=(0,0,520,520)) #创建canvas canvas.place(x = 75, y = 265) #放置canvas的位置 frame=Frame(canvas) #把frame放在canvas里 frame.place(width=180, height=180) #frame的长宽,和canvas差不多的 vbar=Scrollbar(canvas,orient=VERTICAL) #竖直滚动条 vbar.place(x = 180,width=20,height=180) vbar.configure(command=canvas.yview) hbar=Scrollbar(canvas,orient=HORIZONTAL)#水平滚动条 hbar.place(x =0,y=165,width=180,height=20) hbar.configure(command=canvas.xview) canvas.config(xscrollcommand=hbar.set,yscrollcommand=vbar.set) #设置 canvas.create_window((90,240), window=frame) #create_window
当然,如果是纯文本的滚动,可以选择scrolltext组件,它的函数和text一样,可以参考一下这个链接 https://www.jianshu.com/p/abea88607525
-
tkinter之Frame
2019-04-12 12:32:00tkinter的Frame即容器,在容器内部好像不能再嵌套一个Frame。 转载于:https://www.cnblogs.com/jums/p/10695317.html转载于:https://www.cnblogs.com/jums/p/10695317.html
-
【PYTHON】tkinter之Frame
2019-04-12 12:32:00tkinter之Frame tkinter的Frame即容器,在容器内部好像不能再嵌套一个Frame。 posted @ 2019-04-12 12:32 东京的樱花在巴黎飘下 阅读(...) 评论(...) 编辑 收藏 -
Python Tkinter 之Frame控件(Python GUI 系列4)
2018-04-22 13:06:15本章介绍Tkinter的Frame控件,本文是Python GUI系列的第4篇文章,整个系统约20篇博客,将全面的介绍Python Tkinter常用控件,最后还将基于Tkinter搭建两个比较完整的小项目。 2. 环境信息 **********************... -
Tkinter-Frame
2018-07-06 16:52:12The Tkinter Frame WidgetFrame(框架)组件是在屏幕上的一个矩形区域。Frame 主要是作为其他组件的框架基础,或为其他组件提供间距填充。何时使用 Frame 组件? Frame 组件主要用于在复杂的布局中将其他组件分组,... -
tkinter-frame
2020-07-20 09:48:50frame控件 frame控件是一个显示为矩形的控件,...main_win.title('渔道的Frame控件') width = 300 height = 300 main_win.geometry(f'{width}x{height}') frm = Frame(main_win, width=50, height=50, background=' -
TKinter之Frame
2020-01-29 15:03:36Frame框架 相当于web框架中的div 容器 不写width和height属性的时候默认为无,及只有一个点 import tkinter # 复选框组件 root = tkinter.Tk() root.geometry('500x500') # 创建组件 f1 = tkinter.... -
tkinter中frame布局控件
2019-10-03 06:15:25frame控件 frame控件是将窗口分成好几个小模块,然后每个小模块中添加控件。 也就是将窗口合理的布局 由于和其他控件的操作基本一致,就不做注释了 1 import tkinter 2 3 wuya = tkinter.Tk() 4 wuya.... -
Python-tkinter9:一个简单的tkinter(frame)
2019-10-06 09:33:07frame:一个框架,里面可以放各种小部件,说白了,就是一个长在窗口里的窗口。 示例代码: import tkinter as tk # 1.创建窗口(window) window = tk.Tk() # 2.设置窗口(window)的属性 window.title("my-... -
Python之tkinter 框架Frame的基本应用
2020-03-15 10:32:40文章目录框架Frame框架Frame的初步运用在框架内创建Widget控件活用relief 属性在含有raised属性的框架内创建复选框额外对relief属性的支持标签框架LabelFrame标签框架的基本概念将标签框架用于复选框顶层窗口 ... -
tkinter 09 Frame 框架
2018-04-16 17:49:00# Frame 是一个在 Windows 上分离小区域的部件, 它能将 Windows 分成不同的区,然后存放不同的其他部件. # 同时一个 Frame 上也能再分成两个 Frame, Frame 可以认为是一种容器. # 运行结果:https://... -
tkinter——frame部件
2018-03-30 10:01:57也在学习中,这些都是... Frame 部件###定义一个`label`显示`on the window`tk.Label(window, text='on the window').pack()###在`window`上创建一个`frame`frm = tk.Frame(window)frm.pack()###在刚刚创建的`fram... -
python tkinter 隐藏frame_Python GUI编程(Tkinter)
2020-11-25 19:02:40Python GUI编程(Tkinter)作者:杨梦鸽校对:翟舒青Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在... -
Python--tkinter之Frame
2020-01-11 23:27:00框架,用来承载放置其他GUI元素,就是一个容器,是一个window上分离小区域的部件,他能将windows分成不同区,然后存放不同的其他部件,同时一个Frame上也能再分为两个Frame,Frame可以认为是一种容器。 案列如下: ...