Python GUI之tkinter窗口實踐

 1.label和Button

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk


window = tk.Tk()

window.title('zpz')
window.geometry('200x100')

var = tk.StringVar()

l = tk.Label(window,textvariable= var ,bg='white',font=('Arial',12),width=30,height = 2)

l.pack()

on_hit =False

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

b = tk.Button(window,text='hit me',font=('Arial',12),width=10,height=1,command=hit_me)

b.pack()


window.mainloop()

2.Text窗口部件

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk


window = tk.Tk()

window.title('zpz')
window.geometry('200x100')

e = tk.Entry(window,show=None)

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 point', width=10,
               height=2, command=insert_point)
b1.pack()
b2 = tk.Button(window, text='insert end', width=10,
               height=2, command=insert_end)
b2.pack()


t = tk.Text(window, height=3)
t.pack()

window.mainloop()

3.ListBox窗口部件

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk


window = tk.Tk()

window.title('zpz')
window.geometry('500x300')

var1 = tk.StringVar()

l = tk.Label(window,bg = 'green',fg = 'yellow',font=('Arial',12),width=10,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((1,2,3,4))

lb = tk.Listbox(window,listvariable = var2)

list_items = [11,22,33,44]

for item in list_items:
    lb.insert('end',item)

lb.insert(1,'first')
lb.insert(2,'second')
lb.delete(4)

lb.pack()




window.mainloop()

4.Radiobutton(單選框)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk


window = tk.Tk()

window.title('zpz')
window.geometry('500x300')

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

def print_selection():
    l.config(text='choosed' + 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()

5.canvas(畫布)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk


window = tk.Tk()

window.title('zpz')
window.geometry('500x300')

canvas = tk.Canvas(window,bg='green',height = 250,width = 250)

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

image = canvas.create_image(100,0,anchor='n',image=image_file)

canvas.pack()

def moveit():
    canvas.move(image,2,2)

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


window.mainloop()

6. 菜單欄

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪衛
 
import tkinter as tk  # 使用Tkinter前需要先導入
 
# 第1步,實例化object,建立窗口window
window = tk.Tk()
 
# 第2步,給窗口的可視化起名字
window.title('My Window')
 
# 第3步,設定窗口的大小(長 * 寬)
window.geometry('500x300')  # 這裏的乘是小x
 
# 第4步,在圖形界面上創建一個標籤用以顯示內容並放置
l = tk.Label(window, text='      ', bg='green')
l.pack()
 
# 第10步,定義一個函數功能,用來代表菜單選項的功能,這裏爲了操作簡單,定義的功能比較簡單
counter = 0
def do_job():
    global counter
    l.config(text='do '+ str(counter))
    counter += 1
 
# 第5步,創建一個菜單欄,這裏我們可以把他理解成一個容器,在窗口的上方
menubar = tk.Menu(window)
 
# 第6步,創建一個File菜單項(默認不下拉,下拉內容包括New,Open,Save,Exit功能項)
filemenu = tk.Menu(menubar, tearoff=0)
# 將上面定義的空菜單命名爲File,放在菜單欄中,就是裝入那個容器中
menubar.add_cascade(label='File', menu=filemenu)
 
# 在File中加入New、Open、Save等小菜單,即我們平時看到的下拉菜單,每一個小菜單對應命令操作。
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) # 用tkinter裏面自帶的quit()函數
 
# 第7步,創建一個Edit菜單項(默認不下拉,下拉內容包括Cut,Copy,Paste功能項)
editmenu = tk.Menu(menubar, tearoff=0)
# 將上面定義的空菜單命名爲 Edit,放在菜單欄中,就是裝入那個容器中
menubar.add_cascade(label='Edit', menu=editmenu)
 
# 同樣的在 Edit 中加入Cut、Copy、Paste等小命令功能單元,如果點擊這些單元, 就會觸發do_job的功能
editmenu.add_command(label='Cut', command=do_job)
editmenu.add_command(label='Copy', command=do_job)
editmenu.add_command(label='Paste', command=do_job)
 
# 第8步,創建第二級菜單,即菜單項裏面的菜單
submenu = tk.Menu(filemenu) # 和上面定義菜單一樣,不過此處實在File上創建一個空的菜單
filemenu.add_cascade(label='Import', menu=submenu, underline=0) # 給放入的菜單submenu命名爲Import
 
# 第9步,創建第三級菜單命令,即菜單項裏面的菜單項裏面的菜單命令(有點拗口,笑~~~)
submenu.add_command(label='Submenu_1', command=do_job)   # 這裏和上面創建原理也一樣,在Import菜單項中加入一個小菜單命令Submenu_1
 
# 第11步,創建菜單欄完成後,配置讓菜單欄menubar顯示出來
window.config(menu=menubar)
 
# 第12步,主窗口循環顯示
window.mainloop()

7.MessageBox 窗體控件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪衛
 
import tkinter as tk  # 使用Tkinter前需要先導入
import tkinter.messagebox  # 要使用messagebox先要導入模塊
 
# 第1步,實例化object,建立窗口window
window = tk.Tk()
 
# 第2步,給窗口的可視化起名字
window.title('My Window')
 
# 第3步,設定窗口的大小(長 * 寬)
window.geometry('500x300')  # 這裏的乘是小x
 
# 第5步,定義觸發函數功能
def hit_me():
    tkinter.messagebox.showinfo(title='Hi', message='你好!')              # 提示信息對話窗
    # tkinter.messagebox.showwarning(title='Hi', message='有警告!')       # 提出警告對話窗
    # tkinter.messagebox.showerror(title='Hi', message='出錯了!')         # 提出錯誤對話窗
    # print(tkinter.messagebox.askquestion(title='Hi', message='你好!'))  # 詢問選擇對話窗return 'yes', 'no'
    # print(tkinter.messagebox.askyesno(title='Hi', message='你好!'))     # return 'True', 'False'
    # print(tkinter.messagebox.askokcancel(title='Hi', message='你好!'))  # return 'True', 'False'
 
# 第4步,在圖形界面上創建一個標籤用以顯示內容並放置
tk.Button(window, text='hit me', bg='green', font=('Arial', 14), command=hit_me).pack()
 
# 第6步,主窗口循環顯示
window.mainloop()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章