GUI的终极选择:Tkinter12

##Message组件
   ※Message:Message(消息)组件是Label 组件的变体,用于显示多行文本消息。Message 组件能够自动换行,并调整文本的尺寸使其适应给定的尺寸。

from tkinter import *

root = Tk()

w1 = Message(root,text="这是一则消息",width=100)
w1.pack()

w2 = Message(root,text="这是一则骇人听闻的长长长长长长长长消息!",width=100)
w2.pack()

mainloop()

在这里插入图片描述
   (解析:上面就是实例化了两个Message对象,一个w1,一个w2,都放在root窗口中,一个文本比较长,一个比较短,从截图可以看出他确实是可以自动完成换行的,当然你也可以强制让他中途换行,用\n就好了)

##Spinbox组件

   ※Spinbox :Spinbox组件(Tk8.4 新增)是Entry 组件的变体,用于从一些固定的值中选取一个。   (一些固定的值就是指一系列固定的值,可以是连续的,也可以是一些字符串的组合,我们知道 Entry是一个能够让用户随心所欲输入的组件,而Spinbox就进一步去限定用户输入的数据)

from tkinter import *

root = Tk()

w = Spinbox(root,from_= 0,to = 10)
w.pack()

mainloop()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
   (同样的,创建好root窗口后,实例化Spinbox对象,放到root窗口中,其中from_=0,to=10表示要设置从0到10的一个范围,让用户来进行选择,因为from是python 的一个关键字,所以为了区分开来加个下划线,运行成功后,可以看到,首先他仍然是可以像Entry组件一样输入,然后右边还有两个调节键,默认步径单位是1,你也通过increment选项来自己设置

   还有一个就是你可以通过设置wrap选项为True,他就会形成一个循环圈,意思就是当你点击右边的调节键到0或者到10再点就没有反应了,你设置了wrap,你减到0,如果继续减就会跳到10)

   上面的例子给出的是连续的范围,事实上还可以给出一组字符串,然后让他在这组字符串里边进行一个选择

from tkinter import *

root = Tk()

w = Spinbox(root,wrap=True,values=("苹果","香蕉","橘子","雪梨"))
w.pack()

mainloop()

在这里插入图片描述在这里插入图片描述在这里插入图片描述
##PanedWindow组件

   ※PanedWindow:PanedWindow 组件(Tk8.4 新增)是一个空间管理组件。跟 Frame 组件类似,都是为组件提供一个框架,不过 PanedWindow 更高级些,它允许让用户调整应用程序的空间划分。

from tkinter import *

m = PanedWindow(orient=VERTICAL)
m.pack(fill=BOTH,expand=1)

top = Label(m,text="top pane")
m.add(top)
bottom = Label(m,text="bottom pane")
m.add(bottom)

mainloop()

在这里插入图片描述                        在这里插入图片描述
在这里插入图片描述
   (解析:框架有简单的,例如说分为两个窗格,上和下,或者说左和右,上面在实例化PanedWindow对象时,设置了orient为VERTICAL,因为他默认情况是左右分隔的,这里弄一个垂直的VERTICAL,表示他是垂注的分布,然后在pack的时候,设置BOTH选项让这个框架覆盖全局,接着再来两个Label,用add方法分别显示到上面和下面

   刚开始运行得到截图1,发现和使用Frame没什么区别啊,把他拉大后发现他们分开了,然后当你把鼠标放到 "top pane"下方一丢丢,你就会发现鼠标样式改变了,通过拖拽鼠标左键发现你是可以改变他们的布局的,如第三张截图,所以可以猜到,"top pane"下方一丢丢是有一条分割线的,只是看不到)

   上面的例子是上下两个窗格的,下面来个三窗格的,需要点技巧

from tkinter import *

m1 = PanedWindow()
m1.pack(fill=BOTH,expand=1)

left = Label(m1,text="left pane")
m1.add(left)

m2 = PanedWindow(orient=VERTICAL)
m1.add(m2)

top = Label(m2,text="top pane")
m2.add(top)

bottom = Label(m2,text="bottom pane")
m2.add(bottom)

mainloop()

在这里插入图片描述
在这里插入图片描述
   (解析:首先还是先来小窗格,默认的是左右的,left = Label(m1,text=“left pane”)左边的创建好后,右边的再实例化一个PaneWindow,设置orient选项为VERTICAL及垂直的,然后需要注意的就是m1.add(m2),实例化好后是add到m1中去,就是m1的右边,这样的话就是左边是一个Label,右边是一个PaneWindow,然后在基于这个PaneWindow在创建两个Label

   运行后也仍然可以移动他们的位置,也就是说他们有隐藏的线,我们看不到,但是能用鼠标去慢慢得感受他)

   我们只要在实例化PanedWindow时设置"showhandle"选项和"ashrelief"选项就可以看到他们了

from tkinter import *


m1 = PanedWindow(showhandle = True,sashrelief=SUNKEN)
m1.pack(fill=BOTH,expand=1)

left = Label(m1,text="left pane")
m1.add(left)

m2 = PanedWindow(orient=VERTICAL,showhandle = True,sashrelief=SUNKEN)
m1.add(m2)

top = Label(m2,text="top pane")
m2.add(top)

bottom = Label(m2,text="bottom pane")
m2.add(bottom)

mainloop()            

在这里插入图片描述
在这里插入图片描述
   (解析:就是在实例化PanedWindow时把showhandle选项设置为True,ashrelief选项就是分割线,把它的样式设置为"sunken"就是向下凹。
   那个小小的正方形,我们就把它称之为handle,只要你把鼠标放在分割线上,就可以调整它的位置,然后你可以通过设置handlesize来设置handle即那个小正方形的位置,他默认是8个像素所以在比较靠边的位置)

##Toplevel组件

   ※Toplevel:Toplevel(顶级窗口)组件类似于 Frame 组件,但 Toplevel 组件是一个独立的顶级窗口,这种窗口通常拥有标题栏、边框等部件。
   (和root根窗口时一个级别的,他们还共享着一样的方法,Toplevel组件通常是用于你需要显示额外的窗口,对话框,或其他弹出窗口,我们就可以使用它)

在这里插入图片描述
   (解析:现在root窗口里搞一个按钮,当按下按钮时,就会触发create方法创建一个Toplevel窗口,然后Toplevel窗口可以设置自己的title,因为他是一个独立的窗口,它拥有标题,接着可以在这个窗口里面设置文本消息
   然后运行成功后,可以一直创建,一直点一直创建,而他们之间还是互相独立的一个窗口,但是呢他们都是源自于这个root窗口,当root窗口已关闭,他们都同时关闭了)

   然后关于Toplevel窗口和Tk跟窗口的方法,他们有非常多的方法,这里说个attributes(*args),设置和获取窗口的属性,如果你只给出选项名,将返回当前窗口该选项的值,如果选项后面跟值就是取设置这个值,但是这个选项和普通的选项又不太一样,不是说选项名等于这个值就可以了,有个要求就是选项前必须加个小横杠并且用字符串的形式把他包起来,然后用逗号隔开,后边是选项的值,
   下面举个设置alpha选项的例子。alpha就是设置他的透明度
在这里插入图片描述
在这里插入图片描述

发布了247 篇原创文章 · 获赞 116 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/w15977858408/article/details/104214568
今日推荐