【Python】关于Tkinter-GUI图形界面

  1. 创建tkinter图形框架
   #初始gui图形框架
    from tkinter import *       #这样以后就不需要用tk.*来调用了,直接可以用
    import sys
    
    root = Tk()     #创建一个框架
    mainloop()
  1. 点击弹出框
import tkinter as tk
import tkinter.messagebox

class App:
    def __init__(self,master):      #master:父窗口
        frame = tk.Frame(master)    #创建一个框架
        frame.pack(side=tk.BOTTOM,padx=10,pady=20)        #确定位置
        self.hi_there = tk.Button(frame,command=self.__say_hi,text = '王瑶是不是傻逼?',fg = 'black',bg='red')   #在frame里创建打招呼的蓝色按钮
        self.hi_there.pack()
    
    def __say_hi(self):
        tk.messagebox.showinfo(title='王瑶?',message='没错,是的!')   #弹出窗口

root = tk.Tk()  #创建一个主窗口
app = App(root) #调用App类形成tkinter窗口
root.mainloop()

在这里插入图片描述
点击之后
在这里插入图片描述

  1. 导入图片
#创建一个带图片的gui
file_url = sys.path[0] + '/miaomiao0.gif'   #注意,PhotoImage方法只能抓gif文件
photo = PhotoImage(file=file_url)    #抓取一个photo
imgLabel = Label(root,image=photo)  #设置一个photo栏目
imgLabel.pack(side=RIGHT)

mainloop()

在这里插入图片描述

  1. 图片弄成背景
file_url = sys.path[0] + '/miaomiao0.gif'   #注意,PhotoImage方法只能抓gif文件
photo = PhotoImage(file=file_url)    #抓取一个photo
textlabel = Label(root,text ='你就是个\n崽种',
                   justify=LEFT,padx=20,pady=20,image=photo,
                   compound=CENTER,fg='white')   #justify文字对齐
textlabel.pack(side=LEFT)

在这里插入图片描述

  1. 通过按钮改变文本内容
#通过按钮改变文本内容
from tkinter import *       #这样以后就不需要用tk.*来调用了,直接可以用
import sys

def button_call():
    var.set('不,你就是')   #点击按钮后要执行的东西

#大框架搭好
root = Tk()     #创建一个框架
root.title('呜喵喵')
frame1 = Frame(root)    #在root里装两个框架
frame2 = Frame(root)

var = StringVar()       #设置一个可变文本函数var
var.set('你就是个崽种')

#文本的显示(在frame1框架中)
textlabel = Label(frame1,textvariable=var,      #这里要用textvariable把他变成可变文本
                    justify=LEFT,padx=20,pady=20,
                    )   
textlabel.pack(side=LEFT)

#图片的显示(在frame1框架中)
file_url = sys.path[0] + '/miaomiao0.gif'   #注意,PhotoImage方法只能抓gif文件
photo = PhotoImage(file=file_url)    #抓取一个photo
img_label = Label(frame1,image=photo)
img_label.pack(side=RIGHT)

frame1.pack(side=TOP)

#按钮设置(在frame2框架中)
button1 = Button(frame2,text='我不是!',command=button_call)
button1.pack()              #注意,这个.pack()操作一定不能少,每一个组件设置之后都要用
frame2.pack(side=BOTTOM)

mainloop()

在这里插入图片描述
点击之后
在这里插入图片描述

  1. checkbutton选择器

复选框 checkbutton

import tkinter as tk
root = tk.Tk()

GIRLS = ['选项A','选项BB','选项CCC','选项DDDD']
v = []  #方便显示,用列表来存放IntVar()变量

for girl in GIRLS:
    v.append(tk.IntVar())   #把intvar模块添加进v列表中,用于存放按钮状态
    ckbt = tk.Checkbutton(root,text=girl,variable=v[-1])
    ckbt.pack(anchor='w')   #w代表west,向西对齐

tk.mainloop()

在这里插入图片描述

  1. 输入框
import tkinter as tk
root = tk.Tk()

def get_message():
    print("有一个帅哥他叫%s" %e1.get())     #.get()获取输入框的信息
    print("他今年%s岁了" %e2.get())
    e1.delete(0,tk.END)      #从0删到最后一个
    e2.delete(0,tk.END)
    
def then_quit():
    pass

frame1 = tk.Frame(root)
l1 = tk.Label(frame1,text="你的名字")
l1.pack(side=tk.LEFT)
e1 = tk.Entry(frame1)       #创建一个输入框
e1.pack(side=tk.RIGHT,padx=20,pady=20)
frame1.pack()

frame2 = tk.Frame(root)
l2 = tk.Label(frame2,text="你的性别")
l2.pack(side=tk.LEFT)
e2 = tk.Entry(frame2)
e2.pack(side=tk.RIGHT,padx=20,pady=20)
frame2.pack()

frame3 = tk.Frame(root)
b3 = tk.Button(frame3,text="GOT IT",command=get_message)
b3.pack(side=tk.LEFT,padx=20)
b4 = tk.Button(frame3,text="ThenFuckOff",command=root.quit)     #root.quit直接退出 
b4.pack(side=tk.RIGHT,padx=20)
frame3.pack()

# e1.insert(0,'zzy好帅')    #在0插入 zzy好帅
tk.mainloop()

在这里插入图片描述

  • 输入框验证
self.e1 = tk.Entry(root,textvariable=self.v1,validate='focusout',validatecommand=varify)      
 #validate=表示验证情况
 #validatecommand=达成情况时启动代码

在这里插入图片描述

  • validatecommand功能扩展
self.testCMD = root.register(varify1)       #root.register把varify1功能扩展了,可以在后面添加%P、%v、%w等等内容,具体看小甲鱼
       self.e1 = tk.Entry(root,textvariable=self.v1,validate='focusout',\
                                   validatecommand=(testCMD,'%P',),invalidatecommand=varify2)       #validate=表示验证情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值