python -tkinter

news2024/12/22 22:15:09

在Button的command绑定中,如果给的一个函数,则表示执行一次。

import tkinter as Tk

from tkinter import messagebox


i = 0

def myLabel():
    global root,i
    s = Tk.Label(root,text="the import thing is :" )
    s.pack()

root = Tk.Tk()

def fun1():
    if messagebox.showwarning("hello","你确定要离开吗?"):
        root.destroy()


def fun2():
    if messagebox.showwarning("hello","just is hello"):
        root.destroy()

w1 = Tk.Label(root,text="欢迎来到我的世界")
w2 = Tk.Label(root,text="好好学习,天天向上",background="white")
w3 = Tk.Label(root,text="轻松愉快,就选python!",background="red")

w1.pack()
w2.pack()
w3.pack()

b = Tk.Button(root,text="Python",command = myLabel())
b.pack()

root.protocol('WM_DELETE_WINDOW',fun1)
root.mainloop()

此时表示执行myLabel()函数一次,在点击Button时不在进行调用,正确的写法是去掉括号

Button绑定的两种方法:

1、第一种是方法绑定事件

b = Tk.Button(root,text="Python",command = myLabel) b.pack()

2、第二种方法绑定事件

b = Tk.Button(py, text = "Python") # command = myLabel ⽊有了

b.bind("<Button-1>", myLabel) # 多了这⼀句

 

使用grid布局:

import tkinter as Tk

from tkinter import messagebox


root = Tk.Tk()

Tk.Label(root,text="account:").grid(row=0,sticky="w")
Tk.Entry(root).grid(row=0,column=1,sticky="e")

Tk.Label(root,text="password:").grid(row=1,sticky="w")
Tk.Entry(root).grid(row = 1,column = 1,sticky="e")

root.mainloop()

 使用Lable标签模拟Button标签

import tkinter as Tk

from tkinter import messagebox


def myLabel(event):
    global root
    s = Tk.Label(root,text="好好学习,天天向上")
    s.pack()

root = Tk.Tk()

n = Tk.Label(root,text="button")
n.bind("<Button-1>",myLabel)
n.pack()

root.mainloop()

简单的登录系统:

import tkinter as Tk

from tkinter import messagebox


def reg():
    accout_get1 = accout_get.get()
    password_get1 = password_get.get()
    if accout_get1 == "liyong" and password_get1 == "102520":
        msg_label["text"] = "load succecced!"
    else:
        msg_label["text"] = "load fail!"
        


root = Tk.Tk()

s = Tk.Label(root,text="ok")

accout_label = Tk.Label(root,text="accout:")
accout_label.grid(row=0,sticky="w")
accout_get = Tk.Entry(root)
accout_get.grid(row=0,column=1,sticky="e")

password_label = Tk.Label(root,text="password:")
password_label.grid(row=1,column=0,sticky="w")

password_get = Tk.Entry(root)
password_get.grid(row=1,column=1,sticky="e")

button_load = Tk.Button(root,text="load",command=reg)
#button_load.bind("Button-1",reg)
button_load.grid(row=2,column=1,sticky="e")

msg_label = Tk.Label(root,text=" ")
msg_label.grid(row=3)


root.mainloop()

其中msg_label的文件应该是通过什么方式进行了重写,

msg_label["text"] = "load succecced!"

这里的Label属性实现了动态的展示

菜单的简单添加:

import tkinter as Tk

from tkinter import messagebox


root = Tk.Tk()

menuBar = Tk.Menu(root)

for item in ["文件","编辑","视图","关于"]:
    menuBar.add_command(label = item)

root["menu"] = menuBar


root.mainloop()

这⾥要注意的是我们可以先把⼦菜单做好,然后再做上层菜单。

import tkinter as Tk

from tkinter import messagebox


root = Tk.Tk()

menuBar = Tk.Menu(root)

fMenu = Tk.Menu(menuBar)
for item in ["新建","打开","保存","另存为","退出"]:
    fMenu.add_command(label = item)

eMenu = Tk.Menu(menuBar)
for item in ["复制","粘贴","剪切","撤销"]:
    eMenu.add_command(label = item)

vMenu = Tk.Menu(menuBar)
for item in ["默认视图","全屏模式","显示/隐藏菜单"]:
    vMenu.add_command(label = item)

aMenu = Tk.Menu(menuBar)
for item in ["版权信息","帮助文档"]:
    aMenu.add_command(label = item)

menuBar.add_cascade(label = "文件", menu = fMenu)
menuBar.add_cascade(label = "编辑", menu = eMenu)
menuBar.add_cascade(label = "视图", menu = vMenu)
menuBar.add_cascade(label = "关于", menu = aMenu)

root["menu"] = menuBar


root.mainloop()

弹出菜单的制作:

import tkinter as Tk

from tkinter import messagebox


def myLabel():
    global root
    Tk.Label(root,text="python !!!").pack()


root = Tk.Tk()

menuBar = Tk.Menu(root)

for item in ["C/C++","JavaEE","Android","PHP","UI","IOS","JS","could"]:
    menuBar.add_command(label = item)

menuBar.add_command(label = "python",command = myLabel)


def pop(event):
    menuBar.post(event.x_root,event.y_root)


root.bind("<Button-3>",pop)


root.mainloop()

radiobutton:

import tkinter as Tk

from tkinter import messagebox


root = Tk.Tk()

menuBar = Tk.Menu(root)
sonBar = Tk.Menu(menuBar)

item = ["语文","数学","英语","逻辑","科学","心理","体育"]

for echa in item:
    sonBar.add_radiobutton(label = echa)

menuBar.add_cascade(label = "课程",menu = sonBar)

root["menu"] = menuBar

root.mainloop()

checkbutton

import tkinter as Tk

from tkinter import messagebox


root = Tk.Tk()

menuBar = Tk.Menu(root)
sonBar = Tk.Menu(menuBar)

items = ["语文","数学","英语"]

for item in items:
    sonBar.add_checkbutton(label = item)

menuBar.add_cascade(label = "file",menu = sonBar)

root["menu"] = menuBar

root.mainloop()

总结: tkinter.messagebox的几种方法

showinfo
showwarning
showerror
askquestion
askyesno
askokcancel
askretrycancel
 

checkButton使用

import tkinter as Tk

from tkinter import messagebox

def fun1():
    global lab
    lab["text"] = "python 1 check"

root = Tk.Tk()

button1 = Tk.Checkbutton(root,text="python1",command = fun1)
#root.bind()
button1.pack()

lab = Tk.Label(root,text=" ")
lab.pack()

root.mainloop()

text文本使用

import tkinter as Tk

from tkinter import messagebox

root =Tk.Tk()

text = Tk.Text(root,height=30,widt=30)
text.pack()


root.mainloop()

Canvas

Toplevel

import tkinter as Tk

from tkinter import messagebox

root =Tk.Tk()

lb1 = Tk.Label(root,text="root label")
lb1.pack()

la2 = Tk.Toplevel(root,width=30,height=40)
#la2.pack()


root.mainloop()

button:

画象棋:

from tkinter import *
root = Tk()
root.title("中国象棋棋盘⼿绘")
canv = Canvas(root, width = 400, height = 450)
canv.create_line((0,2), (400,2), width = 2)
for i in range(10):
    canv.create_line((0, i * 50), (400, i * 50), width = 2)
    canv.create_line((3,0), (3,450), width = 2)

for i in range(8):
    canv.create_line((i * 50,0), (i * 50,200), width = 2)


for i in range(8):
    canv.create_line((i * 50,250), (i * 50,450), width = 2)
    canv.create_line((397,0), (397,450), width = 2)
    canv.create_line((150,0), (250,100), width = 2)
    canv.create_line((150,100), (250,0), width = 2)
    canv.create_line((150,450), (250,350), width = 2)
    canv.create_line((150,350), (250,450), width = 2)
    canv.create_text(110, 220, text = "汉界")
    canv.create_text(290, 220, text = "楚河")
    canv.pack()

root.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2171902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文系统了解软件检测实验室CNAS认可,文件依据、资源准备、流程、预算

软件检测实验室获取CNAS认可不但可以提升实验室的权威度和社会认可度&#xff0c;在部分区域还可以拿到相关补贴资金。 一、软件检测实验室CNAS认可依据 CNAS-R01&#xff1a;2023《认可标识使用和认可状态声明规则》 CNAS-R02&#xff1a;2023《公正性和保密规则》 CNAS-R…

C语言线程

线程 多个进程中通过轮流使用CPU来完成自己的任务&#xff0c;如果多个进程的操作都一模一样那么CPU的开销就会很大&#xff0c;因为进程的地址都是私有的&#xff0c;如果CPU对相同的操作只执行一次&#xff0c;后面再遇到直接去获取即可&#xff0c;这样大大降低了CPU的开销…

WIN系统 -> CMD命令

查看哪个PID&#xff08;进程ID)--8001 netstat -ano | findstr :8001&#xff0c;然后查看哪个PID&#xff08;进程ID&#xff09;正在使用8001端口 手动结束进程

容器编排工具Docker Compose

目录 一、Docker Compose概述 1、主要功能 2、工作原理 二、常用命令参数 1、服务管理 2、构建和重新构建服务 三、Docker Compose的yml文件 1、服务 2、网络 3、存储卷 四、容器编排实现haproxy和nginx负载均衡 一、Docker Compose概述 1、主要功能 定义服务&#xf…

Linux系统进程控制

目录 一、进程创建 1.进程创建过程 2.写时拷贝 3.fork函数的两种常规用法 二、进程终止 1.进程终止的三种情况 2.进程退出信息 &#xff08;1&#xff09;退出码 &#xff08;2&#xff09;退出信号 3.进程终止的方式 三、进程等待 1.为什么要有进程等待&#xff1f…

成都睿明智科技有限公司赋能商家高效变现

在这个日新月异的数字时代&#xff0c;抖音电商正以不可阻挡之势崛起&#xff0c;成为众多品牌与商家竞相角逐的新战场。在这片充满机遇与挑战的蓝海中&#xff0c;成都睿明智科技有限公司如同一颗璀璨新星&#xff0c;凭借其专业的服务、创新的策略和敏锐的市场洞察&#xff0…

C++你不得不知道的(1)

C你不得不知道的&#xff08;1&#xff09; 【1】引例&#xff1a; 1、C语言在使用的过程中存在冲突问题&#xff01; 解决办法&#xff1a;使用域将想要使用的变量包括进去。 #include<stdio.h> int rand10; int main() {printf("%d\n",rand);return 0; }此…

VS Code激活python虚拟环境常见报错

VS Code激活python虚拟环境常见报错 问题1&#xff1a;执行激活 activate 报错 问题1&#xff1a;执行激活 activate 报错 解决&#xff1a; Win X *执行 set-executionpolicy remotesigned 再输入 Y

【智慧城市】新中地GIS开发实训项目:华农优秀学生学习成果展示(3)智游江城

华农GIS开发实训项目答辩③-智游江城/一个月学习成果展示 项目名称&#xff1a;智游江城 项目功能 主页面展示 菜单功能 控制台 3D城市 查询 导航 游览路线推荐 测量 资讯

Colorful/七彩虹将星X15 AT 23 英特尔13代处理器 Win11原厂OEM系统 带COLORFUL一键还原

安装完毕自带原厂驱动和预装软件以及一键恢复功能&#xff0c;自动重建COLORFUL RECOVERY功能&#xff0c;恢复到新机开箱状态。 【格式】&#xff1a;iso 【系统类型】&#xff1a;Windows11 原厂系统下载网址&#xff1a;http://www.bioxt.cn 注意&#xff1a;安装系统会…

DataWhale x南瓜书学习笔记 task04笔记

线性判别分析&#xff08;LDA&#xff09; 前提假设&#xff1a;各类样本的协方差矩阵相同且满秩LDA的思想&#xff1a;1.设法让训练样例集投影到一条直线上&#xff0c;2.同类样例的投影点尽可能接近&#xff0c;异类样例的投影点尽可能远离&#xff0c;3.在对新样本进行分类时…

嘻哈纸片人仿手绘插画!FLUX一键生成方法!

​ ​ ​ 如何生成这种嘻哈纸片人的仿手绘插画&#xff1f; 只需1个lora&#xff0c;3个步骤&#xff01; 接下来我们来具体的说一下操作方法以及lora使用注意 嘻哈纸片人lora 基于FLUX模型训练 在线使用&下载地址&#xff1a; https://www.liblib.art/modelinfo/53ee…

全新一区PID搜索算法+TCN-LSTM+注意力机制!PSA-TCN-LSTM-Attention多变量时间序列预测(Matlab)

全新一区PID搜索算法TCN-LSTM注意力机制&#xff01;PSA-TCN-LSTM-Attention多变量时间序列预测&#xff08;Matlab&#xff09; 目录 全新一区PID搜索算法TCN-LSTM注意力机制&#xff01;PSA-TCN-LSTM-Attention多变量时间序列预测&#xff08;Matlab&#xff09;效果一览基本…

网络与信息安全工程师(工信部教育与考试中心)

在当今数字化时代&#xff0c;大量的敏感信息与业务流程在网络上传输和处理&#xff0c;使得网络与信息安全成为保障企业运营、政务管理以及金融交易等关键领域不可忽视的一环。 因此&#xff0c;对网络安全专家的需求日益增长。 例如&#xff0c;金融机构、大型电信运营商以…

【AI战略思考5】工欲善其事,必先利其器。我的利器是什么?

目录 导言1.不要忽视时间本身复利的巨大威力2.只赚自己认知以内的钱&#xff0c;只把握自己能力以内的机会3.多做有难度的事来激发自己的潜力和提升自己4.学会抵制诱惑5.减少冗余思考和冗余操作 导言 工欲善其事&#xff0c;必先利其器。我的利器是什么&#xff1f; 虽然我中考…

从零开始搭建UVM平台(二)-加入factory机制

书接上回&#xff1a; 从零开始搭建UVM平台&#xff08;一&#xff09;-只有uvm_driver的验证平台 加入factory机制 前面搭建的平台其实一点都没有用到uvm的特性。 加入factory机制的明显两个优点&#xff1a;&#xff08;1&#xff09;不用自己手动例化类&#xff1b;&…

目标价已被华尔街投行大幅下调,Workday股票还能买入吗?

猛兽财经核心观点&#xff1a; &#xff08;1&#xff09;Needham已经将Workday的目标价下调至300美元&#xff0c;但维持“买入”评级。 &#xff08;2&#xff09;Workday第二季度的财务业绩虽然很强劲的&#xff0c;但面临客户群员工增长疲软挑战。 &#xff08;3&#xff0…

C语言语句、语句分类及注释

文章目录 一、语句和语句分类二、注释&#x1f355;注释是什么&#xff1f;为什么写注释&#xff1f;1. /**/的形式2. //的形式3. 注释会被替换 三、随机数的生成1.rand函数2.srand函数3.time函数4.设置随机数的范围 四、C99中的变长数组五、问题表达式解析表达式1表达式2表达式…

嵌入式的核心能力-Debug调试能力(一)

一、栈回溯 引入&#xff1a;调试程序时&#xff0c;经常会发生这类错误&#xff1a; 读写某个地址&#xff0c;程序报错&#xff1b;调用某个空函数&#xff0c;导致程序报错等等。 解决方法是&#xff0c;可以利用异常处理函数去打印出“发生错误瞬间”的所有寄存器地址 …

网络编程(1)——同步读写api

一、day1 学习了服务器和客户端socket的建立、监听以及连接。 &#xff08;1&#xff09;socket的监听和连接 服务端 1&#xff09;socket——创建socket对象。 2&#xff09;bind——绑定本机ipport。 3&#xff09;listen——监听来电&#xff0c;若在监听到来电&#x…