python tkinter 隐藏frame_Tkinter教程-基础组件(二)

本节介绍Variable类、compound属性、文本输入框组件,文本框与滚动条组件关联绑定等!

2e1a525ae0424993a409362591b21aee

tkinter组件学习

Variable类

再说下面的GUI组件之前,先了解一些Variable类相关用法

Tkinter的Variable类用于跟GUI组件双向绑定,所谓双向绑定:

  • 当程序改变变量值,GUI 组件的显示内容会随之改变
  • 当 GUI 组件的内容发生改变时(比如用户输入),变量的值也会随之改变

实现Tkinter组件与变量双向绑定,只要为组件属性variable/textvariable/onvalue/offvalue/value绑定Variable类值即可

Variable 类数据类型有:

  • StringVar():封装一个str变量
  • IntVar():封装一个整型值变量
  • DoubleVar():封装一个浮点值变量
  • BooleanVar():封装一个bool值变量

Variable类方法:

  • 设置Variable值,用set方法,即:x.set()
  • 得到Variable值,用get方法,即:x.get()

下面程序示范了将 Entry 组件与 StringVar 进行双向绑定,这样程序既可通过该 StringVar 改变 Entry 输入框显示的内容,也可通过该 StringVar 获取 Entry 输入框中的内容:

# -*- coding:utf-8 -*-from tkinter import messagebox,StringVar,BOTH,YES,LEFT,Frame,Tkclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.st = StringVar() # 创建文本输入框,将其textvariable绑定到self.st变量 ttk.Entry(self.mw, textvariable=self.st, width=24,font=('arial', 20, 'bold'), foreground='red').pack(fill=BOTH, expand=YES) # 创建Frame作为容器 f = Frame(self.mw) f.pack() ttk.Button(f, text='获取', command=self.get).pack(side=LEFT) def get(self): messagebox.showinfo(, message=self.st.get() )if __name__ == "__main__": mw = Tk() mw.title("Variable类使用") App(mw) mw.mainloop()

运行程序,在文本框输入内容,然后单击获取按钮,弹出对话框,显示输入内容

compound属性

该属性用于设置组件内部文本和图像的混合模式 如Label、Text等组件同时设置 text 和 image 两个属性,其中 text 是组件显示文本,image是组件显示图片当两个属性,同时设定默认通常 image 会覆盖 text;但有些时候,希望同时显示文木和图片,这时就用到 compound 属性了

compound属性取值有:

  • None 图片覆盖文字
  • LEFT 图片在左,文本在右
  • RIGHT 图片在右,文本在左
  • TOP 图片在上,文本在下
  • BOTTOM 图片在底,文本在上
  • CENTER 文本在图片上方

compound属性使用示例:

# -*- coding:utf-8 -*-from tkinter import ttk,PhotoImage,Tk,BOTH,YES,StringVar,Radiobutton,LEFT,CENTERimport osprint(os.getcwd())class App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.bm = PhotoImage(file = 'image/logo.png') # 创建一个Label,同时指定text和image self.label = ttk.Label(self.mw, text='雷那网 一个Python兴趣屋!',image=self.bm, font=('arial', 20, 'bold'), foreground='red') # Label的compound选型设为None,图片覆盖文字 self.label['compound'] = None self.label.pack() # 创建Frame容器,装载多个Radiobutton f = ttk.Frame(self.mw) f.pack(fill=BOTH, expand=YES) compounds = ('None', "LEFT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值