2017-10-10 116 views
1
import tkinter as tk 

root = tk.Tk() 

buttonOK = tk.Button(root, text='B1') 
MCC = tk.Button(root, text='B2') 
TID = tk.Button(root, text='B3') 
CURRENCY = tk.Button(root, text='B4') 
COUNTRY = tk.Button(root, text='B5') 
RESPONSE = tk.Button(root, text='B6') 


B1.grid(row=3, column=0, sticky=tk.E+tk.W) 
B2.grid(row=3, column=1, sticky=tk.E+tk.W) 
B3.grid(row=3, column=2, sticky=tk.E+tk.W) 
B4.grid(row=4, column=0, sticky=tk.E+tk.W) 
B5.grid(row=4, column=1, sticky=tk.E+tk.W) 
B6.grid(row=4, column=2, sticky=tk.E+tk.W) 

label1 = tk.Entry(root, bd =8) 
label1.grid(row=2, column=0, rowspan=1, columnspan=3, sticky=tk.E+tk.W) 

label=tk.Text(root,background="yellow") 
label.insert(index=0.0, chars="Enter values below\nand click search.\n") 
label.grid(row=0, column=0,rowspan=1, columnspan=3, sticky=tk.E+tk.W) 

root.mainloop() 

我想建立使用Tkinter的,但爲「請在下面輸入\ n然後點擊搜索值。\ n」個佔地約6張空白行插入的文本標籤的空間在Python的GUI。請幫我刪除它。我目前的結果使用上面的代碼是左邊的,我想要有正確的一個圖像。Tkinter的Python的消除垂直空間

enter image description here

+0

您不必使用'粘= tk.E + tk.W',你可以使用'粘= 「EW」'。 –

+0

順便說一句,你正試圖設置'B1'-'B6'到一個網格,但你還沒有定義這些名稱的任何小部件。我假設你正在嘗試將網格管理器應用到先前在代碼中列出的按鈕。如果是這樣,你需要糾正你的網格分配。 –

回答

4

當您創建文本組件,指定你希望它顯示的行數,例如:

label=tk.Text(root,background="yellow", height=3)

未按規定意味着它會默認爲24,因此,爲什麼它在你的程序中如此之大。

+0

謝謝!有效。思考默認總是設置爲1. –

+0

無後顧之憂。如果您不需要關於此主題的進一步幫助,請將答案標記爲已接受:) –

0

忽略代碼中的grid()錯誤。

您可以通過提供重量和起始幾何尺寸來糾正尺寸問題。

UPDATE:

如果您提供的權重,以適當的行和列給你的文本組件的說3默認的高度和你的文本小告訴grid()sticky="nsew"你可以有你的程序開始了大小你如果你想要,並且能夠均勻調整大小。

看看下面的代碼:

import tkinter as tk 

root = tk.Tk() 

# we want all 3 columns to resize evenly for the buttons so we provide 
# a weight of 1 to each. We also want the first row where the text box is 
# to resize so there is not unwanted behavior when resizing, so we set its weight to 1. 
# keep in mind a weight of zero (default) will tell tkinter to not resize that row or column. 
root.columnconfigure(0, weight=1) 
root.columnconfigure(1, weight=1) 
root.columnconfigure(2, weight=1) 
root.rowconfigure(0, weight=1) 

buttonOK = tk.Button(root, text='B1') 
MCC = tk.Button(root, text='B2') 
TID = tk.Button(root, text='B3') 
CURRENCY = tk.Button(root, text='B4') 
COUNTRY = tk.Button(root, text='B5') 
RESPONSE = tk.Button(root, text='B6') 
# corrected the variables being assigned a grid location 
buttonOK.grid(row=3, column=0, sticky=tk.E+tk.W) 
MCC.grid(row=3, column=1, sticky=tk.E+tk.W) 
TID.grid(row=3, column=2, sticky=tk.E+tk.W) 
CURRENCY.grid(row=4, column=0, sticky=tk.E+tk.W) 
COUNTRY.grid(row=4, column=1, sticky=tk.E+tk.W) 
RESPONSE.grid(row=4, column=2, sticky=tk.E+tk.W) 

label1 = tk.Entry(root, bd =8) 
label1.grid(row=2, column=0, rowspan=1, columnspan=3, sticky=tk.E+tk.W) 
# added a height of 3 to the Text widget. to reduce its starting height 
label=tk.Text(root,background="yellow", height=3) 
label.insert(index=0.0, chars="Enter values below\nand click search.\n") 
# added stick="nsew" so the text box will resize with the available space in the window. 
label.grid(row=0, column=0,rowspan=1, columnspan=3, sticky="nsew") 

root.mainloop() 
+0

此解決方案的問題在於您猜測窗口應該有多高。如果此代碼在具有不同分辨率或不同字體的系統上運行,則大小可能不合適。 –

+0

@BryanOakley我可以重寫它來測量開始窗口大小,並將我的最小/最大寬度設置爲該大小。不知道更多關於特定高度的需求,我認爲這對於OP來說是一個好的開始。當我從我目前的項目中分一杯羹時,我會回顧我的答案。 –

+0

是的,你可以。這樣做比麻煩更麻煩,當所有需要完成的事情都是將文本部件的高度設置爲三行,並讓tkinter爲您完成所有計算。 –