日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
聊聊Python中的GUI布局Tkinter

 現(xiàn)在極少有人會用上tkinter了,所以真正研究的人也就更少了,本來不想更新tkinter??吹胶芏嗳嗽趯Wtkinter,其實用Python做布局,沒有人這么干。但還是更新幾節(jié)tkinter,在Python從入門到大師教程中來。

網站設計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網站源代碼;符合網站優(yōu)化排名的后臺管理系統(tǒng);做網站、網站建設收費合理;免費進行網站備案等企業(yè)網站建設一條龍服務.我們是一家持續(xù)穩(wěn)定運營了十多年的創(chuàng)新互聯(lián)網站建設公司。

tkinter

Tkinter包是Python附帶的標準軟件包,所以我們不需要安裝任何東西就可以使用它。

窗口主體框架

每一個 tkinter 應用的主體框架都可以包含下面這部分. 定義 window 窗口 和 window的一些屬性, 然后書寫窗口內容, 最后執(zhí)行window.mainloop讓窗口活起來.

 
 
 
 
  1. import tkinter as tk
  2. window = tk.Tk()
  3. window.title('my window')
  4. window.geometry('200x100')
  5. # 這里是窗口的內容
  6. window.mainloop()

窗口內容

這次我們會建立一個用來描述的標簽 tk.Label, 比如:

 
 
 
 
  1. import tkinter as tk
  2. window = tk.Tk()
  3. window.title('my window')
  4. window.geometry('200x100')
  5. l = tk.Label(window, 
  6.     text='OMG! this is TK!',    # 標簽的文字
  7.     bg='green',     # 背景顏色
  8.     font=('Arial', 12),     # 字體和字體大小
  9.     width=15, height=2  # 標簽長寬
  10.     )
  11. l.pack()    # 固定窗口位置
  12. window.mainloop()

控件

上面的Label就是一個控件,還有很多的,如按鈕,標簽和文本框等,如下圖所示

控件自帶的共同屬性,如大小,字體和顏色等??筛鶕丶宫F(xiàn)形式選擇相應的屬性,具體屬性如下表:

tkinter綁定事件

tkinter綁定事件,就是定義一個函數,然后通過command屬性傳入函數名,下面通過Button綁定事件,點擊就出現(xiàn)Runsen愛學習

 
 
 
 
  1. from tkinter import *
  2. def p_label():
  3.     global root
  4.     Lb = Label(root, text='Runsen愛學習')
  5.     Lb.pack()
  6. root = Tk()
  7. root.title("應用程序窗口")
  8. B_n = Button(root, text='點我', command=p_label, bg='red')  # command后面不能有任何的標點符號
  9. B_n.pack()
  10. root.mainloop()

布局顯示

一個窗口都應該有布局,就是pack的時候需要設置side,expand需要擴展嗎,fill需要填充嗎

 
 
 
 
  1. from tkinter import *
  2. root = Tk()
  3. root.title("應用程序窗口")
  4. Button(root,text='1').pack(side=LEFT,expand=YES,fill=Y)
  5. Button(root,text='2').pack(side=TOP,expand=YES,fill=BOTH)
  6. Button(root,text='3').pack(side=RIGHT,expand=YES,fill=NONE)
  7. Button(root,text='4').pack(side=LEFT,expand=NO,fill=Y)
  8. Button(root,text='5').pack(side=TOP,expand=YES,fill=BOTH)
  9. Button(root,text='6').pack(side=BOTTOM,expand=YES)
  10. Button(root,text='7').pack(anchor=SE)
  11. root.mainloop()

除了pack還有一個grid,grid將組件布局為表格

下面做一個電話撥號盤GUI

 
 
 
 
  1. from tkinter import *
  2. root = Tk()
  3. labels = [['1','2','3'], # 文本,布局為網格
  4.           ['4','5','6'],
  5.           ['7','8','9'],
  6.           ['*','0','#']]
  7. for r in range(4): # 行循環(huán)
  8.     for c in range(3): # 列循環(huán)
  9.         label = Label(root,
  10.                       relief=RAISED, # 設置邊框格式
  11.                       padx=10, # 加寬標簽
  12.                       text=labels[r][c]) # 標簽文本
  13.         label.grid(row=r, column=c) # 將標簽放置在r行c列
  14. root.mainloop()

制作一個日歷

上面教你做一個電話撥號盤GUI,下面能做一個簡單的日歷嗎?

我看你就不會,不是我瞧不起你

放心,有我在。這需要導入calendar模塊了,

 
 
 
 
  1. import calendar
  2. from tkinter import *
  3. root = Tk()
  4. labels = [['Mon','Tue','Wed','Thu','Fri','Sat','Sun']]
  5. MonthCal = calendar.monthcalendar(2020, 5) 
  6. for i in range(len(MonthCal)):
  7.     labels.append(MonthCal[i])
  8. for r in range(len(MonthCal)+1):
  9.     for c in range(7):
  10.         if labels[r][c] == 0:
  11.             labels[r][c] = ' '
  12.         label = Label(root,          
  13.                       padx=5,
  14.                       pady=5,
  15.                       text=str(labels[r][c]))        
  16.         label.grid(row=r,column=c)
  17. root.mainloop()

豐富我們的日歷

上面的日歷就是一個辣雞,啥功能都沒有,需求很簡單,就是來兩個按鈕實現(xiàn)向上翻,向下翻。

向上翻,向下翻兩個按鈕就需要清空界面,再把日歷加到labels列表中 ,放置日歷。好像很簡單,其實就是這么簡單。

大家想一想,怎么做出來。我還是給標準實現(xiàn)代碼

 
 
 
 
  1. # @Author:Runsen
  2. import calendar 
  3. from tkinter import *
  4. root = Tk()
  5. def LabelCal(Year, Month):
  6.     # 首行放置“年、月”的位置
  7.     label = Label(root,text=str(Year)+"年")
  8.     label.grid(row=0,column=2)
  9.     label = Label(root,text=str(Month)+"月")
  10.     label.grid(row=0,column=4)
  11.     # labels列表:放置“星期”的標題
  12.     labels = [['Mon','Tue','Wed','Thu','Fri','Sat','Sun']]
  13.     # 用calendar庫計算日歷
  14.     MonthCal = calendar.monthcalendar(Year, Month)
  15.     # 先把界面清空
  16.     for r in range(7):
  17.         for c in range(7):            
  18.             label = Label(root,
  19.                           width =5,
  20.                           padx=5,
  21.                           pady=5,
  22.                           text=' ')        
  23.             label.grid(row=r+1,column=c)
  24.     # 把日歷加到labels列表中     
  25.     for i in range(len(MonthCal)):
  26.         labels.append(MonthCal[i])
  27.     # 放置日歷
  28.     for r in range(len(MonthCal)+1):
  29.         for c in range(7):
  30.             if labels[r][c] == 0:
  31.                 labels[r][c] = ' '
  32.             label = Label(root,
  33.                           width =5,
  34.                           padx=5,
  35.                           pady=5,
  36.                           text=str(labels[r][c]))        
  37.             label.grid(row=r+1,column=c) # 網格布局
  38. # 默認日期
  39. Year, Month = 2020,5
  40. LabelCal(Year, Month)
  41.         
  42. # button:Enter
  43. def ButtonPrevious():
  44.     global Year, Month
  45.     Month = Month-1
  46.     if Month<1:
  47.         Month = Month+12
  48.         Year = Year-1
  49.     LabelCal(Year, Month)
  50.     
  51. button1 = Button(root, text='Previous', command=ButtonPrevious)
  52. button1.grid(row=len(MonthCal)+3, column=0)
  53. # button:Clear
  54. def ButtonNext():
  55.     global Year, Month
  56.     Month = Month+1
  57.     if Month>12:
  58.         Month = Month-12
  59.         Year = Year+1 
  60.     LabelCal(Year, Month)
  61.     
  62. button2 = Button(root, text='Next', command=ButtonNext)
  63. button2.grid(row=len(MonthCal)+3, column=6)
  64. root.mainloop()

運行一波,來一個最終實現(xiàn)gif效果圖。


分享文章:聊聊Python中的GUI布局Tkinter
URL分享:http://www.5511xx.com/article/cccjcjc.html