91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 中怎么設置Tkinter 窗口

發布時間:2021-07-22 17:41:50 來源:億速云 閱讀:362 作者:Leah 欄目:大數據

Python 中怎么設置Tkinter 窗口,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

什么是布局管理器?說白了就是管理你的那些組件如何排列的家伙。Tkinter有三個布局管理器,分別是pack、grid和place,其中:

pack是按添加順序排列組件。

grid是按行/列形式排列組件。

place允許程序員指定組件的大小和位置。

pack

pack其實之前的例子一直在用,對比grid管理器,pack更適用于少量組件的排列,但它在使用上更加簡單。如果需要創建相對復雜的布局結構,那么建議是使用多個框架(Frame)結構,或者使用grid管理器實現。

不要在同一個父組件中混合使用pack和grid,因為Tkinter會很認真地在那兒計算到底先使用哪個布局管理器……以至于你等了半個小時,Tkinter還在那兒糾結不出結果!

我們常常會遇到的一個情況是將一個組件放到一個容器組件中,并填充整個父組件。下面生成一個Listbox組件并將它填充到root窗口中:

import tkinter as tk 
root = tk.Tk() 
listbox = tk.Listbox(root) 
listbox.pack(fill=tk.BOTH, expand=True) 
for i in range(10): 
  listbox.insert(tk.END, str(i)) 

root.mainloop()

 

其中,fill選項是告訴窗口管理器該組件將填充整個分配給它的空間,BOTH表示同時橫向和縱向擴展,X表示橫向,Y表示縱向;expand選項是告訴窗口管理器將父組件的額外空間也填滿。

默認情況下,pack是將添加的組件依次縱向排列:

import tkinter as tk
root = tk.Tk() 
tk.Label(root,text="Red",bg="red",fg="white").pack(fill=tk.X) 
tk.Label(root,text="Green",bg="green",fg="black").pack(fill=tk.X) 
tk.Label(root,text="Blue",bg="blue",fg="white").pack(fill=tk.X) 
tk.mainloop()

Python 中怎么設置Tkinter 窗口

如果想要組件橫向挨個兒排列,可以使用side選項:

import tkinter as tk 

root = tk.Tk() 

tk.Label(root,text="Red",bg="red",fg="white").pack(side=tk.LEFT) 
tk.Label(root,text="Green",bg="green",fg="black").pack(side=tk.LEFT) 
tk.Label(root,text="Blue",bg="blue",fg="white").pack(side=tk.LEFT) 
tk.mainloop()

GUI Tkinter的三個布局管理器,叫你如何設置窗口功能

grid

grid管理器可以說是Tkinter這三個布局管理器中最靈活多變的。當你在設計對話框的時候,使用gird尤其便捷。如果你此前一直在用pack構造窗口布局,那么學習完grid你會悔恨當初為啥不早學它。使用一個grid就可以簡單地實現你用很多個框架和pack搭建起來的效果。

使用grid排列組件,只需告訴它你想要將組件放置的位置(行/列,row選項指定行,cloumn選項指定列)。此外,你并不用提前指出網格(grid分布給組件的位置稱為網格)的尺寸,因為管理器會自動計算

import tkinter as tk
root = tk.Tk() 
# column默認值是0 
tk.Entry(root).grid(row=0, column=0)
tk.Entry(root).grid(row=0, column=1)
tk.Entry(root).grid(row=0, column=3)
tk.Entry(root).grid(row=1, column=0) 
# tk.Entry(root).grid(row=1, column=1)
tk.Entry(root).grid(row=1, column=3) 
tk.mainloop()

登錄表單

import tkinter as tk
root = tk.Tk() 
root.geometry("300x300+150+150") 
# column默認值是0 
tk.Label(root, text="用戶名").grid(row=0, column=0, sticky=tk.W) 
tk.Entry(root) .grid(row=0, column=1) 
tk.Label(root, text="密碼") .grid(row=1, column=0, sticky=tk.W) 
tk.Entry(root, show="*") .grid(row=1, column=1) 
tk.mainloop()

Python 中怎么設置Tkinter 窗口

默認情況下組件會居中顯示在對應的網格里,你可以使用sticky選項來修改這一特性。該選項可以使用的值有E、W、S、N(EWSN分別表示東西南北,即上北下南左西右東)以及它們的組合。因此,可以通過sticky=W使得Label左對齊:

tk.Label(root, text="密碼") .grid(row=1, column=0, sticky=tk.W)
tk.Entry(root, show="*") .grid(row=1, column=1)

GUI Tkinter的三個布局管理器,叫你如何設置窗口功能

有時候可能需要用幾個網格來放置一個組件,可以做到嗎?當然可以,只需要指定rowspan和columnspan就可以實現跨行和跨列的功能:

跨行和跨列布局

import tkinter as tk
root = tk.Tk() 
# column默認值是0 
tk.Label(root, text="用戶名").grid(row=0,column=0,sticky=tk.W) 
tk.Entry(root) .grid(row=0, column=1) 
tk.Label(root, text="密碼") .grid(row=1, column=0, sticky=tk.W) 
tk.Entry(root, show="*") .grid(row=1, column=1) 
photo = tk.PhotoImage(file="../../../assets/logo.png") 
tk.Label(root,image=photo).grid(row=0,column=2,rowspan=2, padx=5, pady=5) 
tk.Button(text="提交",width=10).grid(row=2,column=0,columnspan=3, pady=5) 
tk.mainloop()

Python 中怎么設置Tkinter 窗口

place

通常情況下不建議使用place布局管理器,因為對比起pack和grid,place要做更多的工作。不過純在即合理,place在一些特殊的情況下可以發揮妙用。請看下面的例子。

使用place,可以將子組件顯示在父組件的正中間:

import tkinter as tk
root = tk.Tk() 
def callback(): 
  print("正中靶心") 

tk.Button(root, text="點我",command=callback).place(relx=0.5, rely=0.5, anchor=tk.CENTER) 
tk.mainloop

GUI Tkinter的三個布局管理器,叫你如何設置窗口功能

在某種情況下,或許你希望一個組件可以覆蓋另一個組件,那么place又可以派上用場了。下面例子演示用Button覆蓋Label組件:

import tkinter as tk 
root = tk.Tk() 
def callback(): 
  print("正中靶心") 
photo = tk.PhotoImage(file="../../assets/logo.png") 
tk.Label(root, image=photo).pack() 
tk.Button(root, text="點我",command=callback).place(relx=0.5, rely=0.5, anchor=tk.CENTER) 
tk.mainloop()

Python 中怎么設置Tkinter 窗口

利用 place 覆蓋組件

不難看出,relx和rely選項指定的是相對于父組件的位置,范圍是00~1.0,因此0.5表示位于正中間。那么relwidth和relheight選項則是指定相對于父組件的尺寸:

 

相對位置和相對尺寸

import tkinter as tk 

root = tk.Tk() 
tk.Label(root, bg="red").place(relx=0.5, rely=0.5, relheight=0.75, relwidth=0.75, anchor=tk.CENTER) 
tk.Label(root, bg="yellow").place(relx=0.5, rely=0.5, relheight=0.5, relwidth=0.5, anchor=tk.CENTER) 
tk.Label(root, bg="green").place(relx=0.5, rely=0.5, relheight=0.25, relwidth=0.25, anchor=tk.CENTER) 
tk.mainloop()

看完上述內容,你們掌握Python 中怎么設置Tkinter 窗口的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

喜德县| 独山县| 金寨县| 宣汉县| 桐梓县| 资兴市| 枞阳县| 宜兴市| 吐鲁番市| 西平县| 蚌埠市| 栾城县| 淮阳县| 子洲县| 嘉荫县| 泸州市| 米泉市| 正定县| 壶关县| 石城县| 嘉善县| 扬州市| 钟祥市| 汝阳县| 武宁县| 集贤县| 普陀区| 商南县| 锦屏县| 始兴县| 怀远县| 青海省| 南召县| 本溪市| 水富县| 永康市| 新竹县| 沈丘县| 呈贡县| 清徐县| 济南市|