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

Python图形界面编程(二)

目录

六、控件属性和事件响应

1、基本的操控

2、示例

七、对话框


六、控件属性和事件响应

1、基本的操控

有的控件有对对应的函数,可以用来设置以及获取属性或者设置属性,或者以字典下标的形式来获取,设置对应的属性:

比如,我们可以用字典下标的形式来更改一些属性:

a_label = tk.Label(win , text = "请登录!")
a_label["text"] = "登录成功!"

以及,面对一些包含文字的Text,我们有对应的函数来对其内容进行获取:

txt = tk.Text(win)
txt.get(0.0 , tk.END)
#0.0就是从第0行,第0列开始取,end就是结尾

有的控件需要我们把它和一个变量相关联,通过操作变量,来改变控件的属性:

import tkinter as tkwin = tk.Tk()   #生成一个窗口
win.title("Hello World")      #指定窗口标题a = tk.StringVar(win)a.set("sin(x)")
entry = tk.Entry(win , textvariable = a)
entry.pack()print(a.get())
win.mainloop()  #显示窗口

除了上述这些,一些控件还可以通过command参数和bind函数来操作控件

2、示例

我们来制作一个简单的登录窗口,如果输入正确的密码和用户名,就显示登陆成功:

import tkinter as tkdef login_button_click() :      #针对点击登录这个按钮进行一些设置if username.get() == "pku" and password.get() == "123" :    #如果用户是pku,密码是123lbHint["text"] = "登录成功!"lbHint["fg"] = "black"#就显示登录成功,并且这个字体是黑色的else :username.set("")password.set("")    #反之,如果错了,我们就让那两个空的值变成空串,就是起到一个清空字符串的目的lbHint["text"] = "用户名或密码错误!"lbHint["fg"] = "red"#并且要显示用户名或密码错误,然后字体是红色的#(上面这几个对于文字的设置,都是通过字典下标的方式)def password_show() :       #对于密码框的密码显示的设置if showPassword.get() :     #检查showPassword的BooleanVa值是不是Truepassword_enter["show"] = ""else :password_enter["show"] = "*"#是就显示,不是就把密码显示成*win = tk.Tk()
win.title("欢迎使用登陆系统")   #经典的创建窗口和窗口标题username = tk.StringVar()
password = tk.StringVar()
#创建获取用户名和密码lbHint = tk.Label(win , text = "请登录")
lbHint.grid(row = 0 , column = 0 , columnspan = 2)      #设置一个小标题
username_label = tk.Label(win , text = "用户名:")
username_label.grid(row = 1 , column = 0 , padx = 5 , pady = 5)
password_label = tk.Label(win , text = "密码:")
password_label.grid(row = 2 , column = 0 , padx = 5 , pady = 5)
#上面四行就是设置用户名和密码这俩标签的username_enter = tk.Entry(win , textvariable = username)
username_enter.grid(row = 1 , column = 1 , padx = 5 , pady = 5)
password_enter = tk.Entry(win , textvariable = password , show = "*")   #show就是显示了刚输入进去的时候是*
password_enter.grid(row = 2 , column = 1 , padx = 5 , pady = 5)
#这四行就是用户名和密码的输入框a_button = tk.Button(win , text = "确认" , command = login_button_click)
a_button.grid(row = 4 , column = 0 , padx = 5 , pady = 5)
other_button = tk.Button(win , text = "退出" , command = win.quit)
other_button.grid(row = 4 , column = 1 , padx = 5 , pady = 5)
#这四行就是登录和退出的,上面有一个command参数,就是当我们点击控件时,进行的操作,一个是执行login_button_click函数,一个是win.quit退出窗口showPassword = tk.BooleanVar()      #给showPassword创建一个布尔对象,里面只有T和F
showPassword.set(False)     #把值设置为Falsechk_show_password = tk.Checkbutton(win , text = "显示密码" , variable = showPassword , command = password_show)
chk_show_password.grid(row = 3 , column = 0 , padx = 5 , pady = 5)
#设置一个勾选框,variable是showPassword,刚刚被设置为了False,就是默认不显示win.mainloop()

七、对话框

对话框可以弹出小窗口和用户进行交互,或者显示信息

比如文件对话框,可以打开文件窗口,或者我们可以自定义一个对话框,比如当我们点击登录按钮时,可以弹出一个小窗,让我们输入密码

我们下面举几个小窗口例子:

import tkinter as tk
from tkinter import messagebox
from tkinter import simpledialogwin = tk.Tk()
win.title("Hello")def a_warning_win() :messagebox.showinfo("Dialog" , "Warning!")def a_yesno_win() :messagebox.askokcancel("Dialog" , "are you sure?")def a_input_win() :simpledialog.askfloat("Dialog" , "请输入金额")def a_error_win() :messagebox.showerror("Dialog" , "错误!")a_button = tk.Button(win , text = "Warning" , command = a_warning_win)
a_button.grid(row = 0 , column = 0 , padx = 5 , pady = 5)
#注意窗口a_button_two = tk.Button(win , text = "Yes-or-No" , command = a_yesno_win)
a_button_two.grid(row = 0 , column = 1 , padx = 5 , pady = 5)
#确定取消窗口a_button_three = tk.Button(win , text = "Input" , command = a_input_win)
a_button_three.grid(row = 1 , column = 0 , padx = 5 , pady = 5)
#输入窗口(数字)a_button_four = tk.Button(win , text = "Error" , command = a_error_win)
a_button_four.grid(row = 1 , column = 1 , padx = 5 , pady = 5)
#报错窗口win.mainloop()

以上就是Python图形界面编程(二)的全部内容:)

相关文章:

  • TCP协议理解
  • c#接口_抽象类_多态学习
  • Golang日志模块之xlog
  • Linux字符设备驱动开发的详细步骤
  • Vue3实现高仿word自定义颜色选择器组件(支持 v-model)
  • 矩阵运营:抢占市场与流量的利器
  • 如何避免IDEA每次打开新项目都重复配置Maven?
  • 【Java并发】【LinkedBlockingQueue】适合初学体质的LinkedBlockingQueue入门
  • C++ 基础知识 指针和函数(利用指针作函数的参数修改实参的值)
  • 代码随想录打卡|Day27(合并区间、单调递增的数字、监控二叉树)
  • 河道流量监测:雷达流量计与多普勒流量计的优劣势与技术特点分析
  • 【C语言】全局变量、静态本地变量
  • 常见的几种分块策略,每种策略都有适用场景和优缺点
  • 华为L410上制作内网镜像模板:搭建Apache服务器并上传离线WeChat包
  • Linux-05 半个月崩了三次 ubuntu 系统记录
  • 基于STM32、HAL库的ADS1256IDBR模数转换器ADC驱动程序设计
  • 常见的6种外挂获取执行时机方法介绍
  • 安全编排自动化与响应(SOAR):从事件响应到智能编排的技术实践
  • 常见游戏引擎介绍与对比
  • Linux的基础指令
  • 印度媒体称印巴在克什米尔再次交火
  • 甘肃张掖至重庆航线开通,串起西北与西南文旅“黄金走廊”
  • 如何做大中国拳击产业的蛋糕?这项赛事给出办赛新思考
  • 从“高阶智驾”到“辅助驾驶”,上海车展上的“智驾”宣发变调
  • 破解160年基因谜题,我国科学家补上豌豆遗传研究最后拼图
  • 铁线礁、牛轭礁珊瑚礁“体检”报告首次发布,专家:菲非法活动产生胁迫性影响