這篇文章為了讓我自己有了更深刻的了解TK模塊而寫
先說說寫這篇文章的前因吧,有人托我寫一個塔羅牌的游戲視窗,就是想把后端程式寫的視窗化看得見,經歷了一晚上的摸索終于明白了Tk模塊是怎么排版的,
第一次寫的:

排版很亂,沒有層次(這個作品我其實不好意思拿出來)大家和我一樣的初學者肯定有和我一樣的疑惑,拿出來好給大家對比,
第二次寫的:

有了明顯的區別,
那么這篇文章就來說說怎么創建tk模塊排版思路
tk模塊里面不是用像素來定位的,而是抽象化的表格如下圖

我們看到他就是一個框,什么都沒有,因為我們還沒給他排版,這個就是我們的視窗,如何來給他排版,我以我上面的塔羅牌游戲視窗為例寫一個位置視窗

這個框架就是我上面的游戲排版,有的人可能說看不懂,為什么因為我的排版不是每個東西都是正方形的,
好,這時候我來給他規劃一下

這樣大家是不是可以看懂了?
對的,我們的TK模塊就是利用表格的性質來排版
可是這時候有同學要問了,這是這么排版那這么定位那個時那個
大家有用過excel表格把?
表格是不是用 A1、A2、A3來定位列,1、2、3來定位行,
tk模塊時直接用數字來定位行與列,row(行)、column(柱)一個行來定位賦值給數字來定位行,柱也同理
我們的表格最左上為0,0,相當于row=0,column=0.這樣就是第一個了如下圖

我的標題就是放在0,2這個位置,撲克牌圖片放在1,0至1,4這個位置以此類推,
好我們講完了這么太排版接下來就是怎么寫代碼了,
在寫代碼前我們得學怎么視窗TK模塊運行框架
第一件事情不說了就是先匯入模塊和進入視窗回圈代碼如下:
import tkinter as tk
root = tk.Tk()
root.title("視窗標題")
#這里寫代碼內容
root.mainloop()
不會這個的可以參考我上一個作品
Python GUI編程(Tkinter),tk模塊使用教程,視窗化創建
點擊上面鏈接進入
我們這里主要將怎么寫內容
我們寫內容的思路是這樣的

1.創建磁區
Frame(height=100,width=50)
height設定區域(高)度
width設定區域(寬)度
特別注意這個不是位置,是這個區域被創建出來的大小,如果我上面的圖片0,1這個位置,大小為eight=30,width=10
2.創建布局
磁區值..grid(row=0,column=0)
磁區值就是把磁區賦值給一個函式然后寫第二行這個
這里就是放這個磁區在表格中第幾個位置了
row(行)設定第幾行
column(柱)設定第幾列
3.創建掛件
這里我以創建標簽掛架為例子
Label(磁區值, text='標簽內容')
磁區值還是上面的磁區賦予的值
標簽內容就自己寫哈
4.加載掛件
掛件值.grid()
這里的掛件值就是第三步掛架賦予的值
有了這四部內容,這么一來程式就可以運行了,
下面我給大家一個簡單的案例,大家對照我上面的所將的內容分析一下哈
from tkinter import *
import time
# --------頭部代碼----------
root = Tk()
root.title('視窗標題')
# --------創建磁區-----------
fenqu1=Frame(height=10,width=50)
fenqu7=Frame(height=10,width=10)
fenqu8=Frame(height=10,width=10)
fenqu9=Frame(height=10,width=10)
fenqu10=Frame(height=10,width=10)
fenqu11=Frame(height=10,width=10)
fenqu12=Frame(height=10,width=50)
# --------創建分布-----------
fenqu1.grid(row=0,column=2)
fenqu7.grid(row=2,column=0)
fenqu8.grid(row=2,column=1)
fenqu9.grid(row=2,column=2)
fenqu10.grid(row=2,column=3)
fenqu11.grid(row=2,column=4)
fenqu12.grid(row=3,column=2)
# --------創建掛件-----------
guajian1=Label(fenqu1, text='標題')
guajian7=Button(fenqu7,text = '按鈕1' )
guajian8=Button(fenqu8,text = '按鈕2')
guajian9=Button(fenqu9,text = '按鈕3' )
guajian10=Button(fenqu10,text = '按鈕4' )
guajian11=Button(fenqu11,text = '按鈕5' )
guajian12=Label(fenqu12, text='挑選一\n張卡牌選\n擇一個數字\n(若選錯則會\n直接結束哦)')
# --------加載掛件-----------
guajian1.grid()
guajian7.grid()
guajian8.grid()
guajian9.grid()
guajian10.grid()
guajian11.grid()
guajian12.grid()
# --------進入死回圈-----------
root.mainloop()
總結思路圖

如果上面還有什么不清楚的記得留言給我,我隨時更新檔案哈,看了這么久,給我點點贊和關注一下吧,嘻嘻,下個文章見,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/169129.html
標籤:其他
