控件之Lable Entry Text Button Scrollbar

2024-06-19 03:32

本文主要是介绍控件之Lable Entry Text Button Scrollbar,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Entry Text 控件:
get() 方法获取文本框中的内容;
insert() 方法插入内容;
delete(self,first,last=None) 删除从 first 到 last 之间的内容;关于 Entry 和 Text 支持的索引需要说明一下,由于 Entry 是单行文本框组件,因此它的索引很简单,
比如要指定第 4 个字符到第 8 个字符,索引指定为 (3,8) 即可。但 Text 是多行文本框组件,
因此它的索引需要同时指定行号和列号,比如 1.0 代表第 1 行、第 1 列(行号从 1 开始, 列号从 0 开始),
如果要指定第 2 行第 3 个字符到第 3 行第 7个字符,索引应指定为 (2.2,3.6)。Text 实际上是一个功能强大的“富文本”编辑组件,这意味着使用 Text 不仅可以插入文本内容,也可以插入图片,
可通过 image_create(self, index, cnf={}, **kw) 方法来插入。Text 也可以设置被插入文本内容的格式,此时就需要为 insert(self, index, chars, *args) 方法的
最后一个参数传入多个 tag 进行控制,这样就可以使用 Text 组件实现图文并茂的效果。当 Text 内容较多时就需要对该组件使用滚动条,以便该 Text 能实现被动显示。为了让滚动条控制 Text 组件
内容的滚动,实际上就是将它们进行双向关联。这里需要两步操作:将 Scrollbar 的 command 设为目标组件的 xview 或 yview,其中 xview 用于水平滚动条控制目标组件水平滚动;
yview 用于垂直读动条控制目标组件垂直滚动。将目标组件的 xscrollcommand 或 yscrollcommand 属性设为 Scrollbar 的 set 方法。

 

from tkinter import *
from tkinter import messageboxroot = Tk()
root.title('Lable Entry Text Scrollbar button')
root.minsize(100,100)topf = Frame(root)
topf.pack(side=TOP, fill=BOTH, expand=YES,padx=5,pady=5)
label = Label(topf, text='Entry:',width=6).pack(side=LEFT, fill=BOTH, expand=YES)
entry = Entry(topf,width=44,font=('楷体', 14),foreground='green')
entry.pack(side=LEFT, fill=BOTH, expand=YES)midf = Frame(root)
midf.pack(side=TOP, fill=BOTH, expand=YES,padx=5,pady=5)
label = Label(midf, text='Text:',width=6).pack(side=LEFT, fill=BOTH, expand=YES)
text1 = Text(midf,width=44,height=4,font=('楷体', 14),foreground='gray')
text1.pack(side=LEFT,fill=BOTH, expand=YES)# 在Entry和Text开始处插入内容
def insert_start():entry.insert(0, 'beginning')text1.insert(1.0, 'beginning')
# 在Entry和Text的编辑处插入内容
def insert_edit():entry.insert(INSERT, 'middle')text1.insert(INSERT, 'middle')
# 在Entry和Text的结尾处插入内容
def insert_end():entry.insert(END, 'ending')text1.insert(END, 'ending')
# 删除Entry和Text内容
def delete_all():entry.delete(first=0,last=END)text1.delete(index1=1.0,index2=1.5)
# 获取Entry
def get_entry():messagebox.showinfo(title='输入内容', message=entry.get())
# 获取Text
def get_text():messagebox.showinfo(title='输入内容', message=text1.get(1.0, END))botf = Frame(root)
botf.pack(side=TOP, fill=BOTH, expand=YES,padx=5,pady=5)
Button(botf, text='开始插入', command=insert_start).pack(side=LEFT,fill=BOTH, expand=YES)
Button(botf, text='编辑处插入', command=insert_edit).pack(side=LEFT,fill=BOTH, expand=YES)
Button(botf, text='结尾插入', command=insert_end).pack(side=LEFT,fill=BOTH, expand=YES)
Button(botf, text='删除内容', command=delete_all).pack(side=LEFT,fill=BOTH, expand=YES)
Button(botf, text='获取Entry', command=get_entry).pack(side=LEFT,fill=BOTH, expand=YES)
Button(botf, text='获取Text', command=get_text).pack(side=LEFT,fill=BOTH, expand=YES)nextf = Frame(root)
nextf.pack(side=TOP, fill=BOTH, expand=YES,padx=5,pady=5)text2 = Text(nextf, height=20, width=30)
text2.pack(side=LEFT, fill=BOTH, expand=YES)
# Scrollbar控制text2
scroll = Scrollbar(nextf, command=text2.yview).pack(side=RIGHT, fill=Y)
# text2影响scroll未实现功能
# text2['yscrollcommand']=scroll.set
#text2.configure(yscrollcommand=scroll.set)
# 配置标题和内容样式
text2.tag_configure('title',font=('楷体', 20, 'bold'),foreground='red',justify=CENTER, spacing3=20)
text2.tag_configure('detail',font=('微软雅黑', 11, 'bold'),foreground='blue',spacing2=10,  # 设置行间距spacing3=15)  # 设置段间距
text2.insert(END, '\n')
# 插入标题内容,insert(self, index, chars, *args) 方法的最后一个参数传入多个 tag 进行控制
text2.insert(END, '《面朝大海,春暖花开》\n','title')
# 创建图片
authorP= PhotoImage(file='C:/Users/caojiangtao/Desktop/shirenhaizi.png')
text2.bm = authorP
text2.image_create(END, image=authorP)
text2.insert(END, '\n')
# 插入内容
details = ('    从明天起,做一个幸福的人,'+'喂马、劈柴,周游世界,'+
'从明天起,关心粮食和蔬菜,'+'我有一所房子,面朝大海,春暖花开'+
'从明天起,和每一个亲人通信,'+'告诉他们我的幸福,'+
'那幸福的闪电告诉我的,'+'我将告诉每一个人,'+
'给每一条河每一座山取一个温暖的名字。\n'
'   陌生人,我也为你祝福,愿你有一个灿烂的前程,愿你有情人终成眷属,'
'愿你在尘世获得幸福,我只愿面朝大海,春暖花开。\n')
# 采用循环插入多条介绍信息
for detail in details:text2.insert(END, detail, 'detail')root.mainloop()

 

这篇关于控件之Lable Entry Text Button Scrollbar的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073885

相关文章

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

Flutter Button使用

Material 组件库中有多种按钮组件如ElevatedButton、TextButton、OutlineButton等,它们的父类是于ButtonStyleButton。         基本的按钮特点:         1.按下时都会有“水波文动画”。         2.onPressed属性设置点击回调,如果不提供该回调则按钮会处于禁用状态,禁用状态不响应用户点击。

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的

Qt-常用控件(3)-多元素控件、容器类控件和布局管理器

1. 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例. QTableView 是基于 MVC 设计的控件.QTableView 自身不持有数据,使用 QTab

【ReactJS】困惑于text/babel与browser.js还是babel.js?

使用JSX   使用JSX,可以极大的简化React元素的创建,JSX抽象化了React.createElement()函数的使用,其语法风格类似于HTML语法风格。对比如下代码可以让你更好的理解这一点。 // 使用React.createElement()return React.createElement('div',null,'Hello',this.props.name);//使用J

Android:EditText在hint字体大小和text字体大小不一致时的设置方法

今天碰到一个需求,有一个输入框EditText,要求输入某项金额,要求在未输入文字之前,hint提示,输入文字之后显示输入的文字,要求是未输入内容时hint字体大小为14sp,输入金额之后字体大小要变成30sp。,可是EditText本身没有这个属性可以设置,怎么办呢,只有在代码中添加监听事件了: /*** 添加监听,在hint时和text时切换字体大小*/cetMoney.addTextCha