[英]Python Tkinter GUI display numpy array in a numbered single row
我正在嘗試將 Python 與 Tkinter 一起使用。 我想要一個 numpy 數組在 GUI 中顯示為一長排,其 position 編號但我正在努力弄清楚如何做到這一點。 這是我的 function 用於此操作
def windspeed():
minSpeed2 = float(minSpeed_entry.get()) # Get value from entry box and converts to float float
maxSpeed2 = float(maxSpeed_entry.get())
if minSpeed2 >= maxSpeed2:
tk.messagebox.showinfo("Speed error", "your minimum speed cannot be greater or equal to the max speed") # gives error if max speed is lower than min speed
windspeed2 = wind_speed(minSpeed2,maxSpeed2)
windspeed2 = np.round(windspeed2,3)
shortwindspeed2 = windspeed2[0:10]
speedbox.delete(1.0, tk.END)
speedbox.insert(tk.END, shortwindspeed2) # this is where i think the problem is
目前它看起來像這樣:
但是我希望它看起來像這樣:
但是在它旁邊的陣列中有 position。
例如:
index 0: 3.8
index 1: 3.9
index 2: 4.0
index 3: 4.1
您希望將 numpy 數組顯示為文本並包括索引。
以下代碼應該可以解決您的問題:
windspeed2 = np.array([3.8, 3.9, 4.0, 4.1]) # this is just for testing. don't copy this line :)
windspeed2_head = windspeed2[:10] # take the first 10 elements
windspeed2_readable = '\n'.join([f"index {i}: {w}" for i, w in enumerate(windspeed2_head)])
print(windspeed2_readable)
#speedbox.insert(tk.END, windspeed2_readable)
為了便於重現,我添加了一個print
語句,您可以在其中放置speedbox.insert(tk.END, windspeed2_readable)
。
那么,我們在這里做什么? 使用enumerate
語句,我們可以將索引添加到任何可迭代對象。 看這個例子:
>>> print(list(enumerate("hello")))
[(0, 'h'), (1, 'e'), (2, 'l'), (3, 'l'), (4, 'o')]
為了獲得windspeed2_readable
,我們正在遍歷windspeed2_head
中的枚舉值。 我們將當前索引分配給i
並將相應的風速分配給w
。 現在我們使用 f-string 將這兩個變量轉換為字符串: f"index {i}: {w}"
。
最后,這部分
>>> [f"index {i}: {w}" for i, w in enumerate(windspeed2_head)]
['index 0: 3.8', 'index 1: 3.9', 'index 2: 4.0', 'index 3: 4.1']
為我們提供了一個字符串列表。 現在我們只需要用換行符'\n'
作為分隔符將它們連接起來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.