美文网首页
[莫烦python]tkinter集合

[莫烦python]tkinter集合

作者: jenye_ | 来源:发表于2019-04-28 17:44 被阅读0次

Label & Button 标签和按钮

https://www.bilibili.com/video/av16942112/?p=2


import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x100') #尺寸

l = tk.Label(window,text = 'OMG! this is TK!',
             bg='green',
             font=('Arial',12),
             width=15,height=2)
l.pack() #安置label

window.mainloop() #运行(windows不断刷新)


import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x100') #尺寸

var = tk.StringVar()
l = tk.Label(window,textvariable=var,
             bg='green',
             font=('Arial',12),
             width=15,height=2)
l.pack() #安置label


on_hit= False
def hit_me():
    global on_hit
    if on_hit ==  False:
        var.set('you hit me')
        on_hit = True
    else:
        var.set('')
        on_hit=False

b = tk.Button(window,text='hitme',
            width=15,height=2,
            command=hit_me)
b.pack()

window.mainloop() #运行(windows不断刷新)

Entry & Text 输入,文本框

视频


import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

e = tk.Entry(window,show='*') #输入全部显示*
e.pack()

def insert_point():
    var = e.get()
    t.insert('insert',var)

def insert_end():
    var = e.get()
    t.insert('end',var)

b1 = tk.Button(window,text='insert potin',
            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()

window.mainloop() #运行(windows不断刷新)
def insert_end():
    var = e.get()
    t.insert(1.1,var)#第一行第一列输入

Listbox 列表部件

import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

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)
    

b1 = tk.Button(window,text='print selection',
            width=15,height=2,
            command=print_selection)
b1.pack()

var2 = tk.StringVar()
var2.set([11,22,33,44])
lb = tk.Listbox(window,listvariable=var2)
list_items = ['a','b','c']
for item in list_items:
    lb.insert('end',item)
lb.insert(1,'first')
lb.insert(2,'second')
lb.delete(2)
lb.pack()

window.mainloop() #运行(windows不断刷新)

Radiobutton 选择按钮

import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

var = tk.StringVar()
l = tk.Label(window,bg='yellow',width=20,text='empty')
l.pack()


def print_selection():
    l.config(text='you have selected'+var.get())
    
    

r1 = tk.Radiobutton(window,text='Option A',variable=var,value='A',
                    command=print_selection)
r1.pack()


r2 = tk.Radiobutton(window,text='Option B',variable=var,value='B',
                    command=print_selection)
r2.pack()


r3 = tk.Radiobutton(window,text='Option C',variable=var,value='C',
                    command=print_selection)
r3.pack()
window.mainloop() #运行(windows不断刷新)

Scale 尺度

import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

var = tk.StringVar()
l = tk.Label(window,bg='yellow',width=20,text='empty')
l.pack()


def print_selection(v):  #v传入值
    l.config(text='you have selected'+v)
    
    
s = tk.Scale(window,label='try me',from_=5,to=11,
             orient=tk.HORIZONTAL,
             length=200,showvalue=1,#是否显示值
             tickinterval=3,# 隔多少单位显示标签
             resolution=0.01,#精度 保留两位小数
             command=print_selection
             )
s.pack()
window.mainloop() #运行(windows不断刷新)

Checkbutton 勾选项

import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

var = tk.StringVar()
l = tk.Label(window,bg='yellow',width=20,text='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()
c1 = tk.Checkbutton(window,text='Python',
                    variable=var1,onvalue=1,offvalue=0,
                    command=print_selection)
c2 = tk.Checkbutton(window,text='C++',
                    variable=var2,onvalue=1,offvalue=0,
                    command=print_selection)
c1.pack()
c2.pack()
window.mainloop() #运行(windows不断刷新)

Canvas 画布

锚定的点的参数
import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

canvas = tk.Canvas(window,bg='blue',
                   height=100,width=200)

image_file = tk.PhotoImage(file='ins.png')

image = canvas.create_image(0, 0, anchor='nw',#图片中的定位点
                            image=image_file)
x0,y0,x1,y1 = 50,50,80,80
line = canvas.create_line(x0,y0,x1,y1)#线
oval = canvas.create_oval(x0,y0,x1,y1,fill='red')#圆形
arc = canvas.create_arc(x0+30,y0+30,x1+30,y1+30,start=0,exten=180)
rect = canvas.create_rectangle(100,30,120,50)
canvas.pack()

def moveit():
    canvas.move(rect,0,2) #(元素,x移动,y移动)
b = tk.Button(window,text='move',
              command=moveit).pack()

window.mainloop() #运行(windows不断刷新)

Menubar菜单

import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

counter = 0
l = tk.Label(window,text='',bg='yellow')
l.pack()

def do_job():
    global counter
    l.config(text='do'+str(counter))
    counter+=1

menubar = tk.Menu(window)

filemenu = tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='File',menu=filemenu)
filemenu.add_command(label='New',command=do_job)
filemenu.add_command(label='Open',command=do_job)
filemenu.add_command(label='Save',command=do_job)
filemenu.add_separator()
filemenu.add_command(label='Exit',command=window.quit)

submenu = tk.Menu(filemenu,tearoff=0)
filemenu.add_cascade(label='Import',menu=submenu,underline=0)
submenu.add_command(label='submenu1',command=do_job)


editmenu = tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='Edit',menu=editmenu)
editmenu.add_command(label='Cut',command=do_job)
editmenu.add_command(label='Copy',command=do_job)
editmenu.add_command(label='Paste',command=do_job)


window.config(menu=menubar)
window.mainloop() #运行(windows不断刷新)



Frame 框架

import tkinter as tk

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

tk.Label(window,text='on the window').pack()

frm = tk.Frame(window) #主Frame在window上
frm.pack()
frm_l = tk.Frame(frm) #Frame left在Frame上
frm_r = tk.Frame(frm)

frm_l.pack(side='left') #在主Frame左边
frm_r.pack(side='right')

tk.Label(frm_l,text='on the frm_l1').pack()
tk.Label(frm_l,text='on the frm_l2').pack()
tk.Label(frm_r,text='on the frm_r1').pack()
window.mainloop() #运行(windows不断刷新)



messagebox 弹窗

注意要import

from tkinter import messagebox
import tkinter as tk
from tkinter import messagebox

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

def hit_me():
    #tk.messagebox.showinfo(title='Hi',message='hahahahha')
    #tk.messagebox.showwarning(title='Hi',message='nonononono')
    #tk.messagebox.showerror(title='Hi',message='nonononono')
    #print(tk.messagebox.askquestion(title='Hi',message='nonononono') )return 'yes' or 'no'
    #print(tk.messagebox.askyesno(title='Hi',message='nonononono') )return True or False
    print(tk.messagebox.askretrycancel(title='Hi',message='nonononono') ) #return True or False
    #print(tk.messagebox.askokcancel(title='Hi',message='nonononono') )return True or False
 
tk.Button(window,text='hit me',command=hit_me).pack()
window.mainloop() #运行(windows不断刷新)


pack grid place 放置位置

pack

import tkinter as tk
from tkinter import messagebox

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

tk.Label(window,text=1).pack(side='top')
tk.Label(window,text=1).pack(side='left')
tk.Label(window,text=1).pack(side='right')
tk.Label(window,text=1).pack(side='bottom')
window.mainloop() #运行(windows不断刷新)

grid

import tkinter as tk
from tkinter import messagebox

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

for i in range(4):
    for j in range(3):
        tk.Label(window,text=1).grid(row=i,column=j,
                                     padx=10,pady=10#外部宽度
                                     )
window.mainloop() #运行(windows不断刷新)


place

import tkinter as tk
from tkinter import messagebox

window = tk.Tk()
window.title('my window') #标题
window.geometry('200x200') #尺寸

tk.Label(window,text=1).place(x=10,y=100,anchor='nw')

window.mainloop() #运行(windows不断刷新)


相关文章

网友评论

      本文标题:[莫烦python]tkinter集合

      本文链接:https://www.haomeiwen.com/subject/xdfdnqtx.html