0
A
回答
3
您可以創建一個名爲spinBox
類。該類包括
- 一個class attribute稱爲
font
其保持pygame的字體對象。 四種方法:
.draw()
:繪製spinBox
到通過表面.increment()
,.decrement()
:增加或減少紡紗器的當前狀態.__call__()
:手柄單擊事件
以及__init__()
方法。
和笛實例屬性:
self.rect
self.image
self.buttonRects
self.state
self.step
的spinBox
類:
class spinBox:
font = pygame.font.Font(None, 50)
def __init__(self, position):
self.rect = pygame.Rect(position, (85, 60))
self.image = pygame.Surface(self.rect.size)
self.image.fill((55,155,255))
self.buttonRects = [pygame.Rect(50,5,30,20),
pygame.Rect(50,35,30,20)]
self.state = 0
self.step = 1
def draw(self, surface):
#Draw SpinBox onto surface
textline = spinBox.font.render(str(self.state), True, (255,255,255))
self.image.fill((55,155,255))
#increment button
pygame.draw.rect(self.image, (255,255,255), self.buttonRects[0])
pygame.draw.polygon(self.image, (55,155,255), [(55,20), (65,8), (75,20)])
#decrement button
pygame.draw.rect(self.image, (255,255,255), self.buttonRects[1])
pygame.draw.polygon(self.image, (55,155,255), [(55,40), (65,52), (75,40)])
self.image.blit(textline, (5, (self.rect.height - textline.get_height()) // 2))
surface.blit(self.image, self.rect)
def increment(self):
self.state += self.step
def decrement(self):
self.state -= self.step
def __call__(self, position):
#enumerate through all button rects
for idx, btnR in enumerate(self.buttonRects):
#create a new pygame rect with absolute screen position
btnRect = pygame.Rect((btnR.topleft[0] + self.rect.topleft[0],
btnR.topleft[1] + self.rect.topleft[1]), btnR.size)
if btnRect.collidepoint(position):
if idx == 0:
self.increment()
else:
self.decrement()
實例:
#import pygame and init modules
import pygame
pygame.init()
#create pygame screen
screen = pygame.display.set_mode((500,300))
screen.fill((255,255,255))
#create new spinBox instance called *spinBox1*
spinBox1 = spinBox((20, 50))
spinBox1 .draw(screen)
pygame.display.flip()
while True:
#wait for single event
ev = pygame.event.wait()
#call spinBox1 if pygame.MOUSEBUTTONDOWN event detected
if ev.type == pygame.MOUSEBUTTONDOWN and ev.button == 1:
spinBox1(pygame.mouse.get_pos())
spinBox1.draw(screen)
#updtae screen
pygame.display.flip()
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
pygame.quit()
exit()
請注意,這是僅是示例代碼。無論如何,我希望我可以幫你一點:)
相關問題
- 1. Pygame旋轉
- 2. Pygame圖像旋轉
- 3. Pygame旋轉射擊
- 4. Pygame形狀旋轉
- 5. pygame旋轉問題
- 6. Pygame和一個精靈的旋轉
- 7. 在Pygame中旋轉和移動精靈
- 8. 在pygame中旋轉圖像
- 9. 旋轉動畫板(python,pygame)
- 10. 在Pygame中旋轉圖像
- 11. 改變旋轉方向Pygame
- 12. 使用pygame旋轉圖像
- 13. Pygame圖像隨着旋轉移動
- 14. 如何在pygame中旋轉線條?
- 15. 如何在PyGame中旋轉對象
- 16. pygame中的旋轉命中盒rects
- 17. Pygame旋轉導致圖像結局
- 18. 用pygame繪製旋轉字體
- 19. pygame如何正確旋轉圖像?
- 20. 不能在pygame中旋轉圖像
- 21. Pygame玩家旋轉鼠標相機
- 22. Python中的矩形旋轉/ Pygame
- 23. 在Pygame中旋轉圖像不失真
- 24. sge-pygame旋轉父母和孩子的小精靈
- 25. 旋轉矩陣 - 圍繞旋轉框旋轉球
- 26. CSS 3D框旋轉
- 27. OnCreate對話框和屏幕旋轉
- 28. Powerbuilder旋轉文本和邊框
- 29. IOS CABasicAnimation旋轉和觸摸框架
- 30. 翻轉和旋轉
非常感謝你...... !! – Shape
@Shape:沒問題,我很高興能幫助你! :)如果你想讓你接受這個答案(點擊答案旁邊的綠色勾號)。如果您將來有任何問題,請告訴我們。 :D – elegent
這個例子太棒了。謝謝!你能給我一個關於如何讓用戶在旋轉框中輸入一個值的提示嗎? – user2738748