我正在嘗試可視化二進制搜索演算法,我需要使用 tkinter 創建 10 個“支柱”。我是這樣做的(下面的代碼),但我覺得有更好的方法來做同樣的事情。我已經嘗試使用 for 回圈和 exec 命令制作支柱,但我似乎沒有讓它作業。
import tkinter as tk
class MainWindow(tk.Tk):
def __init__(self):
super().__init__()
self.geometry("1000x600")
self.resizable(False, False)
self.title("Binary Search Algorithm")
self.p0 = tk.Label(self, text=f"I am pillar 0", bg="grey")
self.p1 = tk.Label(self, text=f"I am pillar 1", bg="grey")
self.p2 = tk.Label(self, text=f"I am pillar 2", bg="grey")
self.p3 = tk.Label(self, text=f"I am pillar 3", bg="grey")
self.p4 = tk.Label(self, text=f"I am pillar 4", bg="grey")
self.p5 = tk.Label(self, text=f"I am pillar 5", bg="grey")
self.p6 = tk.Label(self, text=f"I am pillar 6", bg="grey")
self.p7 = tk.Label(self, text=f"I am pillar 7", bg="grey")
self.p8 = tk.Label(self, text=f"I am pillar 8", bg="grey")
self.p9 = tk.Label(self, text=f"I am pillar 9", bg="grey")
self.p0.place(x=0, y=500)
self.p1.place(x=100, y=500)
self.p2.place(x=200, y=500)
self.p3.place(x=300, y=500)
self.p4.place(x=400, y=500)
self.p5.place(x=500, y=500)
self.p6.place(x=600, y=500)
self.p7.place(x=700, y=500)
self.p8.place(x=800, y=500)
self.p9.place(x=900, y=500)
if __name__ == "__main__":
Display = MainWindow()
Display.mainloop()
uj5u.com熱心網友回復:
是的,保留一個標簽串列或字典,而不是多個單獨的屬性。
def __init__(self):
super().__init__()
self.geometry("1000x600")
self.resizable(False, False)
self.title("Binary Search Algorithm")
self.ps = []
for i in range(10):
p = tk.Label(self, text=f"I am pillar {i}", bg="grey")
p.place(x=100*i, y=500)
self.ps.append(p)
在代碼的其余部分,你將取代(例如)self.p0用self.ps[0],和類似的其他號碼屬性。
uj5u.com熱心網友回復:
是的,你可以做類似的事情
for i, x in enumerate(x_values):
setattr(self, f'p{i}', x)
雖然,我不知道 tkinter 需要什么,但我會重新考慮邏輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/318700.html
