当前位置: 首页 > news >正文

PythonGUI编程(3) ---- Options选项 Entry单行文本框 Text多行文本框

文章目录

    • Options
    • Entry单行文本框
    • Text多行文本框

Options

通过Options设置组件的属性,从而控制各个组件的状态
设置 Options三种方式

  1. 在创建对象时,使用关键字参数
label01 = Label(text='程序员',width=10,height=2,bg='black',fg='white')
  1. 创建对象后使用字典索引的方式
label01['bg'] = 'black'
  1. 创建对象对象后使用configfig方式
label01.config(fg = 'red')

Entry单行文本框

Entry用来接收一行字符串的控件,如果用户输入的文字长度长于Entry控件的宽度时文字会自动往后滚
想输入多行文本,需要使用Text控件

下面使用单行文本框实现登录注册

from tkinter import *
from tkinter import messagebox
# Entry单行文本框

class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master)  # super() 代表的是父类的定义,而不是父类的对象
        self.master = master
        self.pack()
        self.createWidget()

    def createWidget(self):
        """创建登录界面的的组件"""
        self.label01 = Label(self,text='用户名')
        self.label01.pack()  # 布局管理器

        # StringVar变量绑定到指定的组件
        # StringVar变量的值发生变化,组件内容发生变化
        # 组件内容发生变化,StringVar变量的值也发生变化

        v1 = StringVar()  # 字符串
        self.entry01 = Entry(self,textvariable=v1)
        self.entry01.pack()

        # 创建密码框
        self.label02 = Label(self,text='密码')
        self.label02.pack()

        v2 = StringVar()  # 字符串
        self.entry02 = Entry(self, textvariable=v2,show='*')
        self.entry02.pack()

        # 设置默认值
        v1.set("admin")
        # v1.get() 获取中v1的值
        Button(self,text='登录',command=self.login).pack()

    def login(self):
        username = self.entry01.get()
        pwd = self.entry02.get()
        # 从数据库中获取用户表名和密码进行比对
        print("用户名"+username)
        print("用户名"+pwd)
        messagebox.showinfo("Message","登录成功")



if __name__ == '__main__':
    root = Tk()
    root.geometry("600x400+300+300")
    app = Application(master=root)
    root.mainloop()

在这里插入图片描述

Text多行文本框

Text的主要用于显示多行文本,还可以显示网页链接,图片,html页面甚至CSS样式表,添加组件等
因此常被当做简单的文本处理器,文本编辑器或者网页浏览器来使用,IDLE就是Text组件构成的

使用Text多行文本框实现一个小的记事本功能
实现了一些小功能,添加文本,返回文本,添加图片,添加组件,控制文本,并设置文本的底色

from tkinter import *
from tkinter import messagebox

class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master)  # super() 代表的是父类的定义,而不是父类的对象
        self.master = master
        self.photo = ''
        self.pack()
        self.createWidget()

    def createWidget(self):
        """多行文本框的组件"""
        # 宽度20个字母(10个汉字)高度一行
        self.w1 = Text(root,width=40, height=12,bg='gray')
        self.w1.pack()  # 布局管理器

        self.w1.insert(1.0,'0123456789\nasdfdasf')  # 1.0 第一行第0列 行从1开始数,列从0开始输
        self.w1.insert(2.3, 'asdfasdfasdf\nasdfdasf\n') # 2.3第2行3列

        Button(self,text='重复插入文本',command=self.insterText).pack(side='left') # 布局管理器,按钮的位置
        Button(self,text='返回文本',command=self.returnText).pack(side='left')
        Button(self, text='添加图片', command=self.addImage ).pack(side='left')
        Button(self, text='添加组件', command=self.addWidget).pack(side='left')
        Button(self, text='通过tag精准空控制文本', command=self.testTag).pack(side='left')
    def insterText(self):
        # 表示在光标处插入
        self.w1.insert(INSERT,' Gaoqi ')
        # END索引好表示在最后插入
        self.w1.insert(END,'[sxt]')
    def returnText(self):
        # Indexes(索引)是用来指向Text组件中文本的位置
        # Text的组件索引也是实际字符之间的位置
        # 核心:行号从1开始列号从0开始
        print(self.w1.get(1.2,1.6))  # 第一行第二列到第一行第六列
        self.w1.insert(1.8,'gaoqi')  # 插入
        print("所有文本内容:\n" + self.w1.get(1.0,END))  # 从开头到结尾
    def addImage(self):
        # global photo
        self.photo = PhotoImage(file='py.png')
        self.w1.image_cget(END,image=self.photo)
    def addWidget(self):
        b1 = Button(self.w1,text='按钮')
        # 在text中创建组件的命令
        self.w1.window_create(INSERT,window=b1)
    def testTag(self):
        self.w1.delete(1.0,END)  # 删除数据
        self.w1.insert(INSERT,'good good good good\n第二行的文本\n第三行的文本')
        self.w1.tag_add('good',1.0,1.9) # 做标记
        # 设置做标记的文本,根据标记名选择
        self.w1.tag_config('good',background='yellow',foreground='red')
        self.w1.tag_add("baidu",2.3,2.5)
        self.w1.tag_config("baidu",underline=True)
        self.w1.tag_bind("baidu",'<Button-1>',self.webshow)

    def webshow(self,event): # 传入事件
        print("打开浏览器")




if __name__ == '__main__':
    root = Tk()
    root.geometry("600x400+300+300")
    app = Application(master=root)
    root.mainloop()

在这里插入图片描述

相关文章:

  • 源表应用之四探针法测量半导体电阻率
  • qs序列化插件
  • 焊缝质量检测数据集
  • 学习C++图像处理最快最好的途径
  • EasyExcel的使用
  • 操作系统实验一 Linux基本操作
  • 【JavaEE初阶】前端篇:HTML(下篇)
  • 中国青年报APP设备注册
  • Nginx基本介绍
  • 使用python把普通图片生成ico图标
  • python04- 函数、time
  • 【乳腺癌诊断】基于聚类和遗传模糊算法乳腺癌(诊断)分析(Matlab代码实现)
  • 【优化算法】最小均值 (LMF) 和最小均方 (LMS) 算法【含Matlab源码 2134期】
  • 本地Pycharm连接远程服务器详细配置过程(直接在本地使用服务器显卡,很棒)
  • 大数据技术之HBase+Redis详解
  • .pyc 想到的一些问题
  • emacs初体验
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • learning koa2.x
  • vue 配置sass、scss全局变量
  • 关于for循环的简单归纳
  • 基于 Babel 的 npm 包最小化设置
  • 简单易用的leetcode开发测试工具(npm)
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 听说你叫Java(二)–Servlet请求
  • 怎样选择前端框架
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (Python第六天)文件处理
  • (rabbitmq的高级特性)消息可靠性
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (利用IDEA+Maven)定制属于自己的jar包
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (一)Thymeleaf用法——Thymeleaf简介
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .aanva
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /dev下添加设备节点的方法步骤(通过device_create)
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @ConditionalOnProperty注解使用说明
  • @基于大模型的旅游路线推荐方案
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [IDF]聪明的小羊
  • [IE9] IE9 RC版下载链接
  • [javaSE] 看知乎学习工厂模式