簡體   English   中英

Python Tkinter GUI 顯示 numpy 陣列中的編號單行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM