当前位置: 首页 > 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图形界面编程(二)的全部内容:)

http://www.xdnf.cn/news/130537.html

相关文章:

  • 使用 Frp 同时实现 HTTP 和 HTTPS 内网穿透
  • SQLMesh 表格对比指南:深入理解 table_diff 工具的实际应用
  • c++进阶——类与继承
  • 命令行指引的尝试
  • 【Linux学习笔记】进程的fork创建 exit终止 wait等待
  • 如何让 HTML 文件嵌入另一个 HTML 文件:详解与实践
  • Java面试高频问题(26-28)
  • 使用浏览器的Clipboard API实现前端复制copy功能
  • 基准指数选股策略思路
  • 风光储能+智能调度,这才是企业未来能源管理的最优解
  • Linux进程学习【基本认知】
  • vscode切换Python环境
  • C++中的浅拷贝和深拷贝
  • 【现代深度学习技术】循环神经网络06:循环神经网络的简洁实现
  • 头歌实训之索引
  • MySQL 库的操作 -- 增删改查,备份和恢复,系统编码
  • 深度解析之算法之分治(快排)
  • Python-36:饭馆菜品选择问题
  • 使用jsrsasign进行RSA加密解密
  • Vue 2 和 Vue 3 的详细对比,从 生命周期、API、响应式系统、函数调用 等多角度展开,最后附表格总结
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第三模块·面向对象深度进化 —— 第十二章 接口:比C函数指针更强大的契约
  • 数学基础 -- 欧拉公式的推导过程学习
  • 精准落地设计,现代项目管理中的深度实践
  • FeignClient用法笔记
  • 构建企业官方网站有哪些必备因素?
  • YOLOv8融合CPA-Enhancer【提高恶略天气的退化图像检测】
  • ecovadis认证需要提供哪些文件?ecovadis认证优势是什么?
  • c语言 write函数
  • Java线程池那点事(面试高频)
  • ASR VAD TTS