首页 > 其他分享 >GUI———Tkinter

GUI———Tkinter

时间:2023-06-19 11:22:05浏览次数:25  
标签:Tkinter text GUI window 窗体 tk command pack

Tkinter

1、Label & Button 标签和按钮

#一、基础的命名与标签

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("200x100") #定义窗体的大小

#2.标签的设置
L = tk.Label(window,text="OMG! this is TK",bg = "green",font=("Arial",2,),width=15,height=2)
# window:在window中显示;bg:背景颜色;font:字体类型及大小;width/heigh:宽与高,这里的大小是通过字符衡量的
L.pack()#标签显示的位置

#3.窗口的不停更新
window.mainloop()


#二、Button的设置
#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小
var = tk.StringVar()#tk里面特定的变量形式

#2.标签的设置
L = tk.Label(window,textvariable=var, bg = "green",font=("Arial",12,),width=15,height=2)
# window:在window中显示;bg:背景颜色;font:字体类型及大小;width/heigh:宽与高,这里的大小是通过字符衡量的
L.pack()#标签显示的位置

on_hit = False

#其实这块是有点晕的
def hit_me():
    global on_hit #将on_hit声明为全局变量,并对全局变量进行修改
    if on_hit == False:
        on_hit = True
        var.set("you hit me")
    else:
        on_hit = False
        var.set("")

#3.button的设置
b = tk.Button(window,text="hit me",width=15,height = 2,command=hit_me)#hit_me是一个自定义的函数
b.pack()
#感觉就是点击一次执行一次

2. Entry&Text 输入,文本框

1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

#2.输入的内容
e = tk.Entry(window,show="**")#show为掩饰字符,show的默认值为None
e.pack()

def insert_point():
    var = e.get()#通过get索取entry的值
    t.insert("insert",var)

def insert_end():
    var = e.get()
    t.insert("end",var)
    # t.insert("2.2",var)#在第2行第2列插入

b1 = tk.Button(window,text ="insert point",width=15,height=2,
               command = insert_point)
b1.pack()

b2 = tk.Button(window,text = "insert end",
               command=insert_end)
b2.pack()
#文本显示
t = tk.Text(window,height=2)
t.pack()

#3.窗口的不停更新
window.mainloop()

3.Listbox列表部件

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

#设置一个标签
var1 = tk.StringVar()
l = tk.Label(window,bg ="yellow",width=4,textvariable=var1)
l.pack()
#很不喜欢这样把函数全局变量放在后面
def print_selection():
    value = lb.get(lb.curselection())
    var1.set(value) #进行值的传递

#button的设置
b1 = tk.Button(window,text="print selection",width=15,
               height=2,command = print_selection)
b1.pack()

#listbox的设置
var2 = tk.StringVar()
var2.set((11,22,33,44))
lb = tk.Listbox(window,listvariable=var2)
list_item = [1,2,3,4]
for item in list_item:
    lb.insert("end",item)
lb.insert(1,"first")
lb.insert(2,"second")
lb.delete(2)
lb.pack()

#3.窗口的不停更新
window.mainloop()

4.Radiobutton选择按钮

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

#设置一个标签
var = tk.StringVar()
l = tk.Label(window,bg ="yellow",width=20,text="empty")#初始默认值都为empty
l.pack()

def print_selection():
    l.config(text="you have selected"+var.get()) #config 修改任何设置

r1 = tk.Radiobutton(window,text="Option A",
                    variable=var,value="A",
                    command=print_selection) #把A赋值于variable
r1.pack()

r2 = tk.Radiobutton(window,text="Option B",
                    variable=var,value="B",
                    command=print_selection) #把A赋值于variable
r2.pack()

r2 = tk.Radiobutton(window,text="Option B",
                    variable=var,value="B",
                    command=print_selection) #把A赋值于variable
r2.pack()

#3.窗口的不停更新
window.mainloop()

5.scale尺度

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

#设置一个标签
var = tk.StringVar()
l = tk.Label(window,bg ="yellow",width=20,text="empty")#初始默认值都为empty
l.pack()

def print_selection(v):
    l.config(text="you have selected"+v) #config 修改任何设置

s = tk.Scale(window,label="try me",from_=5,to=11,orient=tk.HORIZONTAL,
             length=400,showvalue=3,tickinterval=3,resolution=0.02,
             command=print_selection)
#orient,横向显示还是纵向显示,length指的是像素长度,showvalue是否显示数值,0是否,1是是,
#tickinterval:标签的变量长度,是每个几个数显示一个数
#resolution保留几位小数。0.01:2位小数;0.1:1位小数;1:整数
#command。每次拖动的时候会运行该函数,有默认的传入值,所以需要一个参数v
s.pack()

window.mainloop()

6.Checkbutton

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

#设置一个标签
var = tk.StringVar()
l = tk.Label(window,bg ="yellow",width=20,text="empty")#初始默认值都为empty
l.pack()

def print_selection():
    if(var1.get() == 1) & (var2.get() == 0):
        l.config(text = "I love only Python")
    elif (var1.get() == 0) & (var2.get() == 1):
        l.config(text="I love only C++")
    elif (var1.get() == 0) & (var2.get() == 0):
        l.config(text="I do not love either")
    else:
        l.config(text="I love both")


var1 = tk.IntVar()
var2 = tk.IntVar()
#存在的价值就是做一个变量的传递

cl1 = tk.Checkbutton(window, text="python", variable=var1,onvalue=1,offvalue=0,
                    command=print_selection)
#onvalue=1,offvalue=0,选择这个按钮就把variable赋值为1,不选就赋值为0

cl2 = tk.Checkbutton(window, text="C++", variable=var2,onvalue=1,offvalue=0,
                    command=print_selection)
cl1.pack()
cl2.pack()

window.mainloop()

7.Canvas画布

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

canvas = tk.Canvas(window,bg="blue",height=250,width=500) #定义一个画布
image_file = tk.PhotoImage(file = "E:\Desktop\littleman.png")#加载一个图片
image = canvas.create_image(0,0,anchor="nw",image = image_file)
#anchor:图片的锚定点在哪里,nw:左上
x0,y0,x1,y1 = 150,150,80,80
line = canvas.create_line(x0,y0,x1,y1)#画直线从一个点一个点到另外一个点

oval = canvas.create_oval(x0+50,y0,x1,y1,fill = "red")#画一个圆,用红色进行填充

arc = canvas.create_arc(x0+30,y0+30,x1+30,y1+30,start=0,extent=180)#扇形开始于0度,打开了180度

rect = canvas.create_rectangle(200,200,100,100)#正方形
canvas.pack()

def moveit():
    canvas.move(rect,0,2)#每次x移动0,y移动2

b = tk.Button(window,text="move",command=moveit).pack()

window.mainloop()

8.Menubar

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

l = tk.Label(window,text="",bg="yellow")
l.pack()
counter = 0
def do_job():
    global counter
    l.config(text = "执行了" + str(counter))
    counter += 1

menubar = tk.Menu(window)

filemenu = tk.Menu(menubar,tearoff=0)#filemenu一个菜单,放在menubar,tearoff是否有间隔
menubar.add_cascade(label="文件",menu=filemenu)#filemenu的名字为"File",待会试一下能不能直接进行修改
filemenu.add_command(label="新文件",command=do_job)
filemenu.add_command(label="打开文件",command=do_job)
filemenu.add_command(label="保存文件",command=do_job)
filemenu.add_separator() #子菜单中加入分割线
filemenu.add_command(label="退出",command=window.quit)#退出窗口

editmenu = tk.Menu(menubar,tearoff=0)#editmenu是menubar中的一个menu
menubar.add_cascade(label="编辑",menu=editmenu)#filemenu的名字为"File"
editmenu.add_command(label="剪切",command=do_job)
editmenu.add_command(label="复制",command=do_job)
editmenu.add_command(label="粘贴",command=do_job)
editmenu.add_separator() #子菜单中加入分割线
editmenu.add_command(label="退出",command=window.quit)#退出窗口

window.config(menu=menubar)

window.mainloop()

9.Frame框架

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小


frm = tk.Frame(window)#大框架
frm.pack()

frm_1 = tk.Frame(frm,)#在大框架上放置一个小框架
frm_2 = tk.Frame(frm,)
frm_1.pack(side="left")#在大框架的左边
frm_2.pack(side="right")#在大框架的右边

tk.Label(frm_1,text = "on the frm_11").pack()#text:显示的内容
tk.Label(frm_1,text = "on the frm_12").pack()
tk.Label(frm_2,text = "on the frm_杨").pack()
window.mainloop()

10.messagebox弹窗

import tkinter as tk
import tkinter.messagebox #直接用tk.messagebox会报错

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

def hit_me():
    tk.messagebox.showinfo(title = "HI",message="hahhahahhaha")
    tk.messagebox.showwarning(title="HI",message="nonononono")
    tk.messagebox.showerror(title="HI",message="NO!!!!never")
    a = tk.messagebox.askquestion(title="HI",message="你是杨某人吗?")#return "yes","no"
    if a == "yes":#利用返回值做文章
        print("我是你爸爸吧")

    tk.messagebox.askyesno(title="HI",message="杨某人是对的嘛?")#return "True","False"

tk.Button(window,text="hit me",command=hit_me).pack()
window.mainloop()

11 pack grid place 放置位置

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

#1.pack
tk.Label(window,text=1).pack(side="top")
tk.Label(window,text=1).pack(side="bottom")
tk.Label(window,text=1).pack(side="left")
tk.Label(window,text=1).pack(side="right")
window.mainloop()

#2.grid
# #实验失败,有空再琢磨吧
for i in range(4):
    for j in range(3):
        tk.Label(window,text=1).grid(row=i,colum=j,)

#3.palce
tk.Label(window,text=1).place(x=10,y=100,anchor="nw")#anchor方位,x,y指的是像素点
window.mainloop()

12登录窗口

#1.窗体的设置
window = tk.Tk()#实例化一个窗体
window.title("my window") #给窗体起一个名字
window.geometry("500x500") #定义窗体的大小

#2.设置欢迎图片
canvas = tk.Canvas(window,height=250,width=500)
image_file = tk.PhotoImage(file="E:\Desktop\welcome.png")
image = canvas.create_image(0,0,anchor="nw",image =image_file)
canvas.pack(side="top")

#用户信息
tk.Label(window,text="用户名").place(x=85,y=300)
tk.Label(window,text="密码").place(x=85,y=350)

#登录框,Entry
#登录名
var_user_name = tk.StringVar()
var_user_name.set("[email protected]")#设置初始默认值!
entry_user_name = tk.Entry(window,textvariable=var_user_name)
entry_user_name.place(x = 150,y = 300)
#登录密码
var_user_pwd = tk.StringVar()
entry_user_pwd = tk.Entry(window,textvariable=var_user_pwd,show="*")
entry_user_pwd.place(x = 150,y = 350)


##烂尾了!!!

标签:Tkinter,text,GUI,window,窗体,tk,command,pack
From: https://www.cnblogs.com/yangzilaing/p/17490678.html

相关文章

  • python+tkinter开发2048游戏
    1.界面设计如果开发这个游戏,相信一定玩过。这里不过多介绍。我最后的效果。2.代码importrandomimporttkinterastkfromtkinterimportmessageboxfromtkinter.constantsimportW,N,E,Sdefrandom_2()->bool:"""在空位置随机生成一个2:ret......
  • UniGui web客户端与本地exe通讯
     原文地址......
  • python自动化办公--pyautogui控制鼠标和键盘操作
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 解决方案 | pyautogui实现等待特定图片(对话框)出现(可设置等待超时时间)
    1、问题为了等待某个【转换完毕】的图片(对话框)出现,如何设置?   2、解决方案代码如下下面代码实现的是:设置超时时间为10s,当你在完成前序工作以后,代码开始进入等待,一旦你的特定图片出现了,马上探测到它的位置并且实现点击按钮。(注意:如果等待时间超过了10s,那么就会返回提示:T......
  • pyautogui.screenshot('test.png') 报错:PyAutoGUI was unable to import pyscreeze (T
    根据提示需要importpyscreeze还需要Pillow.通过pip3list可以查看到已经安装PyScreeze==0.1.29但是不是我手动安装的,应该是Pillow或者pyautogui下载的时候依赖了pyscreeze并且安装了最新版本0.1.29。通过依赖树可以看到是pyautogui依赖了sudopip3installpipdeptree安装查......
  • GUI编程--基于PyQt5(2)
    这部分简单介绍GUI编程应该学什么,大致的一个知识范围1.了解PyQt5的库结构下一章节进入实战。。。 ......
  • python GUI+爬虫——12306抢票软件(1)
    使用python的GUI和爬虫等功能自己构造一个12306的抢票软件。该课程来自网易云课堂的撩课学院,付费课程。地址:网易云课堂搜索以下内容就可找到我跟着学,不一定最后能成功。先试试,想要成功的同学请看我该系列有没有真正实现,如果我没有实现,你可以直接放弃,不用再浪费时间了。简单描述一......
  • python GUI+爬虫——12306抢票软件(2)
    这部分主要是项目环境的配置,下图是概览1.基于项目的虚拟环境--pipenv1.1简介1.2安装pipinstallpipenv, 检查安装状态:pipenv--version 我的系统是mac,该项目使用Windows10开发更好1.3创建项目的虚拟环境,使用pycharm1.4创建完后修改安装源,修改位置为pipfile文件修改:来源修......
  • GUI编程--基于PyQt5(1)
    该系列主要介绍GUI编程的一些知识,来自网易课堂,王顺子课程。这部分主要是一些基础介绍,包括以下内容:GUI全称为:GraphicalUserInterface=  图形化用户接口简单理解就是:-使用Python开发出一个软件的界面,-让用户可以通过软件界面与软件进行交互;python有那些库支持GUI:我们......
  • GUI编程--基于PyQt5(3)
    本部分进入实战,尝试着写一个简单地界面,内容如图所示:箭头为要实现的内容,包括logo,名称,最小/大化,关闭程序,内容。1.首先创建一个py文件,如下图:2.敲代码:不要管每句话是什么意思,先实现,后面老师(王顺子)会具体讲的。fromPyQt5.Qtimport*importsysapp=QApplication(sys.argv)windo......