python布局
『壹』 python創建docx時怎麼設置頁面布局
docx文件的結構分為三層,1、Docment對象表示整個文檔;2、Docment包含了Paragraph對象的列表,每個Paragraph對象用來表示文檔中的一個段落;3、一個Paragraph對象包含Run對象的列表,一個Run對象就是style相同的一段文本。
代碼功能說明:新建一個docx文件,添加3個段落,每段中有5個不同顏色的文本。
參考代碼:
作者:Python_小屋
『貳』 python tkinter 怎麼多行布局
這個問題涉及到tkinter的組件的布局,tkinter提供了三種布局管理方式
pack():以塊的方式組織組件,如同用石塊(組件)堆積金字塔(父組件)一樣.
grid():以類似表格的方式組織,類似excel電子表格.
place():在父組件的指定位置放置子組件,這個方式應該是你想要的效果.
示例:
import Tkinter
top = Tkinter.Tk()
#:建一個canvas,和一個Label
C = Tkinter.Canvas(top, bg="blue", height=300, width=300)
label = Tkinter.Label(C, text='hello' )
#將Label放置到坐上點在Canvas的縱橫30%的處
label.place( height=100, width=100,relx= 0.3, rely=0.3)
C.pack()
top.mainloop()
『叄』 python tkinter grid布局顯示問題求助
什麼時候使用Grid管理器
grid管理器是Tkinter裡面最靈活的幾何管理布局器。如果你不確定什麼情況下從三種布局管理中選擇,你至少要保證自己會使用grid。
當你設計對話框的時候,grid布局管理器是一個非常方便的工具。如果你之前使用pack進行布局的話,你會被使用grid後的簡潔而震驚。與適應很多frame來讓pack工作不同,在大多數情況下,你只需要將所有控制項放置到容器中,然後使用grid將它們布局到任何你想要布局的地方。
參考下面這個例子:
使用pack進行布局的話,你不得不使用一些額外的frame控制項,而且還需要花費一些功夫讓他們變得好看。如果你使用grid的話,你只需要對每個控制項使用grid,所有的東西都會以合適的方式顯示。
注意:不要試圖在一個主窗口中混合使用pack和grid。
使用grid進行布局管理非常容易。只需要創建控制項,然後使用grid方法去告訴布局管理器在合適的行和列去顯示它們。你不用事先指定每個網格的大小,布局管理器會自動根據裡面的控制項進行調節。
from Tkinter import *
master = Tk()
Label(master, text="First").grid(row=0)
Label(master, text="Second").grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
mainloop()
運行如下圖所示:
label1占據0行0列,label2占據1行0列,entry1占據0行1列,entry2占據1行1列。
注意:1.在使用grid方法時,如果不指定column參數,則默認從0開始。
2.沒有被使用的行和列號將被忽略,在上面的例子中如果使用10行和20行,則運行效果是一樣的。
使用sticky參數
默認的空間會在網格中居中顯示。你可以使用sticky選項去指定對齊方式,可以選擇的值有:N/S/E/W,分別代表上/下/左/右。如果你想讓label靠左顯示,你可以設置stricky的值為W。
from Tkinter import *
master = Tk()
Label(master, text="First").grid(row=0, sticky=W)
Label(master, text="Second").grid(row=1, sticky=w)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
mainloop()
運行效果如下圖:
你同樣可以指定控制項跨越一個或者多個網格。columnspan選項可以指定控制項跨越多列顯示,而rowspan選項同樣可以指定控制項跨越多行顯示。
下面的代碼創建了我們最初演示的示意圖:
from Tkinter import *
master = Tk()
var = IntVar()
Label(master, text="First").grid(sticky=E)
Label(master, text="Second").grid(sticky=E)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
checkbutton = Checkbutton(master, text='Preserve aspect', variable=var)
checkbutton.grid(columnspan=2, sticky=W)
photo = PhotoImage(file='2qq.gif')
label = Label(image=photo)
label.image = photo
label.grid(row=0, column=2, columnspan=2, rowspan=2, sticky=W+E+N+S, padx=5, pady=5)
button1 = Button(master, text='Zoom in')
button1.grid(row=2, column=2)
button2 = Button(master, text='Zoom out')
button2.grid(row=2, column=3)
mainloop()
運行效果如下圖:
在這段代碼中,有一些細節需要注意:
1. 我們沒有為左邊的兩個label控制項指定具體的位置,在這種情況下,column將會從0開始,而row將會從第一個沒有使用的值開始。
2. 我們隊checkbutton設置了columnspan參數,所以它會顯示在第二行,並占據第0和1列。
3. 圖像label佔用了2行2列,而最後的兩個button都只佔用了1列。
望採納
『肆』 我Python的tkinter庫的grid布局無效怎麼辦
你好,那個grid函數的話,用row和column是不行的,你換一下用grid(padx=3,pady=0)來將位置設定在3,0的地方。
『伍』 鹽城北大青鳥分享新手程序員學習python編程需要了解哪些技巧
python編程開發技術是目前比較熱門的編程語言之一了,而對於大多數新接觸python編程的程序員來說,如果能夠掌握一定的編程技巧的話會大大降低我們掌握python編程的難度,下面IT培訓http://www.kmbdqn.cn/就一起來了解一下具體內容吧。
建議1:理解Pythonic概念建議2:編寫Pythonic代碼建議3:理解Python與C語言的不同之處建議4:在代碼中適當添加註釋建議5:通過適當添加空行使代碼布局更為優雅、合理建議6:編寫函數的4個原則建議7:將常量集中到一個文件建議8:利用assert語句來發現問題建議9:數據交換值的時候不推薦使用中間變數建議10:充分利用Lazyevaluation的特性建議11:理解枚舉替代實現的缺陷建議12:不推薦使用type來進行類型檢查建議13:盡量轉換為浮點類型後再做除法建議14:警惕eval()的安全漏洞建議15:使用enumerate()獲取序列迭代的索引和值建議16:分清=與is的適用場景建議17:考慮兼容性,盡可能使用Unicode建議18:構建合理的包層次來管理mole建議19:有節制地使用from?import語句建議20:優先使用absoluteimport來導入模塊建議21:i+=1不等於++i建議22:使用with自動關閉資源建議23:使用else子句簡化循環(異常處理)建議24:遵循異常處理的幾點基本原則建議25:避免finally中可能發生的陷阱建議26:深人理解None,正確判斷對象是否為空建議27:連接字元串應優先使用join而不是+建議28:格式化字元串時盡量使用.format方式而不是%建議29:區別對待可變對象和不可變對象建議30:[]、()和{}:一致的容器初始化形式建議31:記住函數傳參既不是傳值也不是傳引用建議32:警惕默認參數潛在的問題建議33:慎用變長參數建議34:深入理解str()和repr()的區別
『陸』 python怎麼把布局固定了不變
所有的Tkinter組件都包含專用的幾何管理方法,這些方法是用來組織和管理整個父配件區中子配件的布局的。Tkinter提供了截然不同的三種幾何管理類:pack、grid和place。
pack()
pack幾何管理採用塊的方式組織配件,在快速生成界面設計中廣泛採用,若干組件簡單的布局,採用pack的代碼量最少。pack幾何管理程序根據組件創建生成的順序將組件添加到父組件中去。通過設置相同的錨點(anchor)可以將一組配件緊挨一個地方放置,如果不指定任何選項,默認在父窗體中自頂向下添加組件。
使用pack()布局的通用公式為:WidgetObject.pack(option, …)
pack方法提供了下列option選項,選項可以直接賦值或以字典變數加以修改:
名稱
描述
取值范圍
expand
當值為「yes」時,side選項無效。組件顯示在父配件中心位置;若fill選項為」both」,則填充父組件的剩餘空間。
「yes」,自然數, 「no」, 0
(默認值為「no」或0)
fill
填充x(y)方向上的空間,當屬性side=」top」或」bottom」時,填充x方向;當屬性side=」left」或」right」時,填充」y」方向;當expand選項為」yes」時,填充父組件的剩餘空間。
「x」, 「y」, 「both」
(默認值為待選)
ipadx, ipady
組件內部在x(y)方向上填充的空間大小,默認單位為像素,可選單位為c(厘米)、m(毫米)、
i(英寸)、p(列印機的點,即1/27英寸),用法為在值後加以上一個後綴既可。
非負浮點數
(默認值為0.0)
padx, pady
組件外部在x(y)方向上填充的空間大小,默認單位為像素,可選單位為c(厘米)、m(毫米)、
i(英寸)、p(列印機的點,即1/27英寸),用法為在值後加以上一個後綴既可。
非負浮點數
(默認值為0.0)
side
定義停靠在父組件的哪一邊上。
「top」, 「bottom」, 「left」, 「right」
(默認為」top」)
before
將本組件於所選組建對象之前pack,類似於先創建本組件再創建選定組件。
已經pack後的組件對象
after
將本組件於所選組建對象之後pack,類似於先創建選定組件再本組件。
已經pack後的組件對象
in_
將本組件作為所選組建對象的子組件,類似於指定本組件的master為選定組件。
已經pack後的組件對象
anchor
對齊方式,左對齊」w」,右對齊」e」,頂對齊」n」,
底對齊」s」
「n」, 「s」, 「w」, 「e」, 「nw」, 「sw」, 「se」, 「ne」, 「center」
(默認為」 center」)
註:以上選項中可以看出expand、fill和side是相互影響的。
典型例子:(默認引用為from Tkinter import *)
單組件填充滿父組件:
text = Text(root, …)
text.pack(expand=YES, fill=」both」)
Tkinter模塊提供了一系列大寫值,其等價於字元型小寫值,即Tkinter,YES= =「yes」。
多組件布局(從左往右):默認布局是從上往下。
btn = Button(root, …)
btn.pack(side=LEFT, padx=<chmetcnv unitname="C" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>4c) #x軸左右拓展4厘米
Text(root, …).pack(side=LEFT)
pack類提供了下列函數:
函數名
描述
slaves()
以列表方式返回本組件的所有子組件對象。
propagate(boolean)
設置為True表示父組件的幾何大小由子組件決定(默認值),反之則無關。
info()
返回pack提供的選項所對應得值。
forget()
Unpack組件,將組件隱藏並且忽略原有設置,對象依舊存在,可以用pack(option, …),將其顯示。
location(x, y)
x, y為以像素為單位的點,函數返回此點是否在單元格中,在哪個單元格中。返回單元格行列坐標,(-1, -1)表示不在其中。
size()
返回組件所包含的單元格,揭示組件大小。
grid()
grid幾何管理採用類似表格的結構組織配件,使用起來非常靈活,用其設計對話框和帶有滾動條的窗體效果最好。grid采 用行列確定位置,行列交匯處為一個單元格。每一列中,列寬由這一列中最寬的單元格確定。每一行中,行高由這一行中最高的單元格決定。組件並不是充滿整個單 元格的,你可以指定單元格中剩餘空間的使用。你可以空出這些空間,也可以在水平或豎直或兩個方向上填滿這些空間。你可以連接若干個單元格為一個更大空間, 這一操作被稱作跨越。創建的單元格必須相臨。
使用grid()布局的通用公式為:WidgetObject.grid(option, …)
grid方法提供了下列option選項,選項可以直接賦值或以字典變數加以修改:
名稱
描述
取值范圍
column
組件所置單元格的列號。
自然數(起始默認值為0,而後累加)
columnspan
從組件所置單元格算起在列方向上的跨度。
自然數(起始默認值為0)
ipadx, ipady
組件內部在x(y)方向上填充的空間大小,默認單位為像素,可選單位為c(厘米)、m(毫米)、
i(英寸)、p(列印機的點,即1/27英寸),用法為在值後加以上一個後綴既可。
非負浮點數
(默認值為0.0)
padx, pady
組件外部在x(y)方向上填充的空間大小,默認單位為像素,可選單位為c(厘米)、m(毫米)、
i(英寸)、p(列印機的點,即1/27英寸),用法為在值後加以上一個後綴既可。
非負浮點數
(默認值為0.0)
row
組件所置單元格的行號。
自然數(起始默認值為0,而後累加)
rowspan
從組件所置單元格算起在行方向上的跨度。
自然數(起始默認值為0)
in_
將本組件作為所選組建對象的子組件,類似於指定本組件的master為選定組件。
已經pack後的組件對象
sticky
組件緊靠所在單元格的某一邊角。
「n」, 「s」, 「w」, 「e」, 「nw」, 「sw」, 「se」, 「ne」, 「center」
(默認為」 center」)
典型例子:(默認引用為from Tkinter import *)
單組件填充滿父組件:
text = Text(root, …)
root.rowconfigure(0, weight=1)
root.columnconfigure (0, weight=1) #可以看出,用grid填充不如pack方便。
多組件布局(滾動條):效果肯定是3種布局方式中最好的。
text = Text(root, …)
text.grid()# 縱向sb = Scrollbar(root, …)
sb.grid(row=0, column=1, sticky='ns')
text.configure(yscrollcommand=sb.set)
sb.configure(command=text.yview)# 橫向sb = Scrollbar(root, orient='horizontal', …)
sb.grid(row=1, column=0, sticky='ew')
text.configure(xscrollcommand=sb.set)
sb.configure(command=text.xview)
grid類提供了下列函數:
函數名
描述
slaves()
以列表方式返回本組件的所有子組件對象。
propagate(boolean)
設置為True表示父組件的幾何大小由子組件決定(默認值),反之則無關。
info()
返回pack提供的選項所對應得值。
forget()
Unpack組件,將組件隱藏並且忽略原有設置,對象依舊存在,可以用pack(option, …),將其顯示。
grid_remove ()
『柒』 python,關於動態QPushButton布局
用上布局,用箱布局 QHBoxLayout, QVBoxLayout
或者用網格布局 QGridLayout
『捌』 python對象的內存布局是怎麼樣的
代碼看起來沒有問題。如果在python3上不能用,應該也只需要小小的調整。原則上應該跑得通。 不過話說回來,這樣的技巧通常在python里用不上。