python tkinter界面基础----文艺范儿


目录

tkinter界面

thinter 控件

控件描述
Button按钮控件;在程序中显示按钮。
Canvas画布控件;显示图形元素如线条或文本
Checkbutton多选框控件;用于在程序中提供多项选择框
Entry输入控件;用于显示简单的文本内容
Frame框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label标签控件;可以显示文本和位图
Listbox列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton菜单按钮控件,用于显示菜单项。
Menu菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message消息控件;用来显示多行文本,与label比较类似
Radiobutton单选按钮控件;显示一个单选的按钮状态
Scale范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text文本控件;用于显示多行文本
Toplevel容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox输入控件;与Entry类似,但是可以指定输入范围值
PanedWindowPanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFramelabelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox用于显示你应用程序的消息框。

公用属性

属性描述
Dimension控件大小;
Color控件颜色;
Font控件字体;
Anchor锚点;
Relief控件样式;
Bitmap位图;
Cursor光标;

几何管理

几何方法描述用法
pack()包装;简单的四种方位确定
grid()网格;表格式确定
place()位置;坐标式确定

简单应用

基本流程:

创建窗口对象 —> 设置窗口title、宽高 —> 添加各种控件(为控件定义功能函数(变量等等))—> 装填控件

Lable 和 Button控件

import tkinter as tk

window = tk.Tk()     #创建窗口对象
window.title('my window')  #设置界面标题
window.geometry('700x500')  #设置界面大小宽*高

var = tk.StringVar()    #定义一个字符串变量
l = tk.Label(window,textvariable = var,bg = 'pink',font = ('Arial',12),width = 50, height = 25) #设置标签界面
l.pack()   #将小部件放到主窗口中

on_hit = False
def hit_me():
    global on_hit      #定义一个全局变量
    if on_hit == False:
        on_hit = True
        var.set('你好哇,李银河!')  #设置var的值
    else:
        on_hit = False
        var.set('')

b = tk.Button(window, text='点我呀', width = 15, height = 2, command = hit_me) #设置一个按钮,command调用函数
b.pack()
window.mainloop()

image-20201025231403247

Entry 和 Text控件

import tkinter as tk

window = tk.Tk()
window.title('一个没有感情的复读机')
window.geometry('700x500')

e = tk.Entry(window, show = None)  #,设置entry控件,show可以指定显示的字符如密码'*'
e.pack()

def insert_this():
    var = e.get()
    t.insert('insert', var)
def insert_end():
    var = e.get()
    t.insert('end', var)
b1 = tk.Button(window, text='复读到这', width=15, height=2, command=insert_this)
b1.pack()
b2 = tk.Button(window, text='复读到文末', width=15, height=2, command=insert_end)
b2.pack()
t = tk.Text(window, height=2)     #设置Text控件
t.pack()
window.mainloop()   #运行并不断刷新界面

image-20201030115023634

Listbox 选择列表

import tkinter as tk
window = tk.Tk()
window.title('你听过最浪漫的话是什么')
window.geometry('700x500')

var1 = tk.StringVar()  #创建字符串变量
l = tk.Label(window, bg='#6f9dff', width=50, textvariable=var1)
l.pack()

def print_selection():
    value = lb.get(lb.curselection())  #获取选择的值
    var1.set(value)  #将选择的值赋给var1(传入Lable控件)

b1 = tk.Button(window, text='是这一句没错了', width=15, heigh=2, command=print_selection)
b1.pack()

var2 = tk.StringVar()
str_1 = '祝你今天快乐,明天的快乐留着我明天祝'
str_2 = '漫天繁星像一场冻结了的大雨'
str_3 = '白天你的影子在你身边,夜晚影子化成无形的夜包裹着我的睡眠'
str_4 = '我将忤逆我的本能去爱你'
str_5 = '你快回来,我一人承受不来'
str_6 = '情长纸短,吻你万千'
var2.set((str_1, str_2, str_3))
lb = tk.Listbox(window, listvariable=var2, width=50) #定义一个选择列表
lb.pack()
list_items=(str_4,str_5,str_6)
for item in list_items:   #循环插入456选项值
    lb.insert('end', item)

lb.insert(1,'不要点我~~~') #插入一个选项到第1位
lb.insert(2, '充数')  
lb.delete(2)       #删除第二个选项
window.mainloop()

image-20201025230956555

Radiobutton选择按钮

import tkinter as tk

window = tk.Tk()
window.title('选一条唯美的句子吧')
window.geometry('500x250')

l = tk.Label(window, bg='#abedc3', width=50, height=3, text='展示台')
l.pack()
def print_selection():
    l.config(text=var.get())  #更改Label标签中的text值为var.get()

var = tk.StringVar()
r1 = tk.Radiobutton(window, text='OptionA', variable=var, 
value='云朵偷喝了我放在屋顶上的酒于是她脸红变成了晚霞', command=print_selection)  #设置一个选择按钮
r1.pack()
r2 = tk.Radiobutton(window, text='OptionB', variable=var, 
value='我们逃走吧,日暮,银河,别再梦里', command=print_selection)
r2.pack()
r3 = tk.Radiobutton(window, text='OptionC', variable=var,
value='秋天该很好,你若尚在场,秋风即使带凉,亦漂亮', command=print_selection)
r3.pack()

window.mainloop()

image-20201026085328443

Scale尺度

import tkinter as tk
window = tk.Tk()
window.title('一个尺度列表')
window.geometry('500x250')

def print_selection(v):      #v是传入s表单的选择值
    l.config(text='大概是'+v+'年吧')

s = tk.Scale(window, label='很久是多久', from_=1, to=10, orient=tk.HORIZONTAL, length=400, showvalue=0, tickinterval=2, resolution=1, command=print_selection)
'''
设置一个尺度表单,
orient是方向(HORIZONTAL是横向),
showvalue是实时显示选中的值(布尔型,0就是false),
tickinterval是表单划分尺度,
resolution是精度(1是精确到整数)
'''
s.pack()

l = tk.Label(window, bg='yellow', width=20, height=2, text='empty')
l.pack()
window.mainloop()

image-20201026093341246

Checkbutton多选表单

import tkinter as tk

window = tk.Tk()
window.title('你喜欢谁的诗嘞')
window.geometry('500x250')

l = tk.Label(window, bg='#abedc3', width=50, height=3, text='empty')
l.pack()
def print_selection():
    if (var_1.get()==0) & (var_2.get()==1):
        l.config(text='人生得意须尽欢,莫使金樽空对月')
    elif (var_1.get()==1) & (var_2.get()==0):
        l.config(text='无边落木萧萧下,不尽长江滚滚来')
    elif (var_1.get())==1 & (var_2.get())==1:
        l.config(text='李白:杜甫和我之间只能选一个,哼!->_->')
    elif (var_1.get())==0 & (var_2.get())==0:
        l.config(text='来吧选一个,小老弟')
var_1 = tk.IntVar()   
var_2 = tk.IntVar()  #定义两个整型变量
c1 = tk.Checkbutton(window, text='杜甫', variable=var_1, 
onvalue=1, offvalue=0, command=print_selection) #设置一个Checkbutton多选选项,若选中则赋值为1,否则为0
c2 = tk.Checkbutton(window, text='李白', variable=var_2, 
onvalue=1, offvalue=0, command=print_selection)
c1.pack()
c2.pack()
window.mainloop()

image-20201026102613475

Canvas画布

import tkinter as tk

window = tk.Tk()
window.title('一个小画布')
window.geometry('500x250')

canvas = tk.Canvas(window, bg='#abedc3', height=200, width=400)  #设置一个画布
image_flie = tk.PhotoImage(file='nice.gif')
image = canvas.create_image(0,0,anchor='nw',image=image_flie)  #设置图片位置,从坐标(0,0)开始,anchor定义锚点位置
x0, y0, x1, y1 = 50, 50, 80, 80
line = canvas.create_line(x0, y0, x1, y1)  #设置一条线段
oval = canvas.create_oval(10, 10, x1, y1,fill='yellow')   #设置一个圆形
arc = canvas.create_arc(x0+50, y0+50, x1+50, y1+50,start=0,extent=180)  #设置一个扇形
rect = canvas.create_rectangle(10, 10, 50, 50)  #设置一个正方形

canvas.pack()
def moveit():
    canvas.move(rect,0,2)  #每点击一次按钮,正方形向下移动2给单位
    canvas.move(oval,2,0)  #每点击一次按钮,圆形向右移动2个单位

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

anchor属性的值:

image-20201026125015827

运行结果:

注:圆形位置的确定以正方形作为参考

image-20201026130708152

Menubar菜单

代码很长,别害怕重复的很多

import tkinter as tk

window = tk.Tk()
window.title('一个菜单')
window.geometry('500x500')

l =  tk.Label(window, text='', bg='yellow')
l.pack()
l_2 = tk.Label(window, text='', bg='pink')
l_2.pack()

def anser():
    l_2.config(text='够了,谢谢妈妈,妈妈真好!')
def do_job1():
    l.config(text='蒜苔炒肉,吃,吃大块滴,两块够吗?')
    l_2.config(text='')
def do_job2():
    l.config(text='洋葱炒肉,吃,吃大块滴,两块够吗?')
    l_2.config(text='')
def do_job3():
    l.config(text='毛血旺,吃,吃大块滴,两块够吗?')
    l_2.config(text='')
def do_job4():
    l.config(text='西红柿草鸡蛋,吃,吃大块滴,两块够吗?')
    l_2.config(text='')
def do_job5():
    l.config(text='肉末茄子,吃,吃大块滴,两块够吗?')
    l_2.config(text='')
def do_job6():
    l.config(text='炸土豆片,吃,吃大块滴,两块够吗?')
    l_2.config(text='')
b = tk.Button(window, text='回复', width=15, height=2, command=anser).pack()    
var = tk.StringVar()
menubar = tk.Menu(window) #设置一个菜单,包含在window界面中
#第一个选项集
pigmenu = tk.Menu(menubar, tearoff=0)     #设置一个选项集包含在menubar菜单中
menubar.add_cascade(label='荤菜', menu=pigmenu)   #设置一个父级选项包含在pigmenu选项集中
pigmenu.add_command(label='蒜苔炒肉', command=do_job1) #设置以下三个子选项
pigmenu.add_command(label='洋葱炒肉', command=do_job2)
pigmenu.add_command(label='毛血旺', command=do_job3)
pigmenu.add_separator()  #设置一个分割线
pigmenu.add_command(label='朕只想吃素的', command=window.quit)  #点击此选项将退出程序
#第二个选项集(流程同上)
caimenu = tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='素菜', menu=caimenu)
caimenu.add_command(label='西红柿草鸡蛋', command=do_job4)
caimenu.add_command(label='肉末茄子', command=do_job5)
caimenu.add_command(label='炸土豆片', command=do_job6)
caimenu.add_separator()
caimenu.add_command(label='朕可不是吃素的', command=window.quit)
window.config(menu=menubar)   #将window界面的菜单改为menubar
window.mainloop()

image-20201026185451409

Frame框架

import tkinter as tk

window = tk.Tk()
window.title('一个框架')
window.geometry('500x250')

tk.Label(window, text='一份心情,一种喜悦!').pack()

frm = tk.Frame(window)   #设置一个大框架,包含在window界面
frm.pack()
frm_l = tk.Frame(frm)      #设置一个子框架,包含在大框架frm中
frm_r = tk.Frame(frm)      #设置一个子框架,包含在大框架frm中
frm_l.pack(side='left')    #设置子框架frm_l在大框架的左侧
frm_r.pack(side='right')   #设置子框架frm_r在大框架的右侧
tk.Label(frm_r, text='疯子在右').pack()    #设置以下三个标签分别在三个子框架内
tk.Label(frm_r, text='疯子在右').pack()
tk.Label(frm_l, text='天才在左').pack()

window.mainloop()

image-20201026195510461

messagebox弹窗

import tkinter as tk
from tkinter import messagebox
window = tk.Tk()
window.title('一个消息弹窗')
window.geometry('500x250')

def normal():
    tk.messagebox.showinfo(title='好哇', message='程序运行成功!')
def warning():
    tk.messagebox.showwarning(title='警告', message='程序出错啦!')
def error():
    tk.messagebox.showerror(title='错误', message='我靠,程序出现致命错误')
def askquestion():
    tk.messagebox.askquestion(title='询问', message='我可以亲你一下吗?')   #若选‘是’则返回yes,选‘否’返回no
def askretrycancel():
    tk.messagebox.askretrycancel(title='询问2', message='你是李银河吧?')  #设置重试取消按钮,返回True或Fasle
def askokcancel():
    tk.messagebox.askokcancel(title='询问3', message='你认识马冬梅吗?')   #设置确定取消按钮,确定返回True,取消返回False
tk.Button(window, text='成功', command=normal).pack()
tk.Button(window, text='警告', command=warning).pack()
tk.Button(window, text='错误', command=error).pack()
tk.Button(window, text='询问', command=askquestion).pack() 
tk.Button(window, text='询问2', command=askretrycancel).pack()
tk.Button(window, text='询问3', command=askokcancel).pack()
window.mainloop()


实例:

image-20201026211844383

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值