所以我正在嘗試制作一些不同的虛擬鍵盤設計,目的是將它們與頭部跟蹤結合使用。我想探索與標準布局相比,圓形鍵盤是否更易于用于頭部跟蹤。
鍵盤看起來像圖片中的那個,但我不確定如何使用 tkinter 制作這種布局(這是我用于另一個鍵盤的鍵盤,但我不限于此庫) . 關于如何制作非方形/矩形 UI 的任何提示?提前致謝。
uj5u.com熱心網友回復:
您可以使用Canvas小部件將選單繪制為弧形專案的集合。畫布的一個特點是你可以給畫布上的專案一個標簽,你可以將該標簽系結到一個事件。
這不是一個完整的解決方案,但它說明了如何繪制一個回應點擊以及進入和離開事件的圓形選單。在下面的代碼中,我們將一個圓繪制為八個圓弧的序列。每個弧都有一個“item”的通用標簽和一個“item-”的特定標簽。然后,這些標簽可用于系結事件,并獲取有關單擊的專案的資訊。
class PieMenu(tk.Canvas):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.tag_bind("item", "<ButtonRelease-1>", self._click)
self.tag_bind("item", "<Enter>", self._enter)
self.tag_bind("item", "<Leave>", self._leave)
for index, start in enumerate(range(0, 360, 45)):
self.create_arc(
(2, 2, 200, 200),
outline="black", fill="white",
start=start, extent=45, tags=(f"item-{index}", "item")
)
def _click(self, event):
item = event.widget.find_withtag("current")[0]
tags = event.widget.itemcget("current", "tags")
print(f"item: {item} tags: {tags}")
def _enter(self,event):
event.widget.itemconfigure("current", fill="lightgray")
def _leave(self,event):
event.widget.itemconfigure("current", fill="white")
您需要添加代碼以包含每個專案的文本,并添加代碼以了解單擊選單的特定部分時要呼叫的函式。該示例的重點是展示繪制一個可以回應滑鼠事件的簡單選單的技術。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/385745.html
