मेरे पास कीडाउन घटनाओं के साथ कुछ पायथन कोड है, मैं मूल रूप से सोच रहा हूं कि एक समय में दो कुंजी दबाए जा सकते हैं, जैसे ctrl + a या ऐसा कुछ । क्या यह संभव है, या मुझे एक कामकाज मिलना होगा?पायथन कीडाउन संयोजन (ctrl + key या shift + key)
उत्तर
उपयोग pygame.key.get_mods()नियंत्रण या शिफ्ट जैसे विशेष चाबियों का राज्य प्राप्त करने के लिए।
get_mods()
एक पूर्णांक देता है और आप की तरह KMOD_SHIFT
प्रलेखन
देखें स्थिरांक के साथ तुलना करना बिटवाइज़ ऑपरेटर्स का उपयोग करना होगा: pygame.key
संपादित करें: उदाहरण
import pygame
import pygame.locals
pygame.init()
screen = pygame.display.set_mode((300,200))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
elif event.key == pygame.K_a and pygame.key.get_mods() & pygame.KMOD_SHIFT:
print "pressed: SHIFT + A"
pygame.quit()
BTW : आप KMOD_LSHIFT
याका उपयोग कर सकते हैंकेवल का परीक्षण करने के लिए बाएं शिफ्ट या केवल सही शिफ्ट का परीक्षण करें।
संपादित करें:
Btw: उदाहरण के दोनों पाली की जाँच करने के get_pressed()
- आप
K_LSHIFT
उपयोग करने के लिए है औरK_LSHIFT
का उपयोग कैसे करें। - इसे प्रिंट "दबाया: शिफ्ट + एक" बार-बार करता है, तो आप रखना शिफ्ट + एक दबाया।
।
import pygame
import pygame.locals
pygame.init()
screen = pygame.display.set_mode((300,200))
running = True
while running:
#
# events
#
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
#
# others
#
all_keys = pygame.key.get_pressed()
#print 'shift:', all_keys[pygame.K_LSHIFT], all_keys[pygame.K_RSHIFT]
if all_keys[pygame.K_a] and (all_keys[pygame.K_LSHIFT] or all_keys[pygame.K_RSHIFT]):
print "pressed: SHIFT + A"
pygame.quit()
Btw:get_pressed()
और get_mods()
वास्तविक जानकारी दे ही अगर pygame.event.get()
उपयोग करने से पहले किया गया था।
संपादित करें:
पहचान करने के लिए कैसे एक, CTRL + एक, शिफ्ट + एक, एएलटी + एक, CTRL + एसएचआई एफटी + एक, CTRL + एएलटी + एक, शिफ्ट + एएलटी + एक,, CTRL + शिफ्ट + एएलटी + एक
import pygame
import pygame.locals
pygame.init()
screen = pygame.display.set_mode((300,200))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
elif event.key == pygame.K_a:
mods = pygame.key.get_mods()
if mods & pygame.KMOD_CTRL and mods & pygame.KMOD_SHIFT and mods & pygame.KMOD_ALT:
print "pressed: CTRL+SHIFT+ALT + A"
elif mods & pygame.KMOD_CTRL and mods & pygame.KMOD_SHIFT:
print "pressed: CTRL+SHIFT + A"
elif mods & pygame.KMOD_CTRL and mods & pygame.KMOD_ALT:
print "pressed: CTRL+ALT + A"
elif mods & pygame.KMOD_SHIFT and mods & pygame.KMOD_ALT:
print "pressed: SHIFT+ALT + A"
elif mods & pygame.KMOD_SHIFT:
print "pressed: SHIFT + A"
elif mods & pygame.KMOD_CTRL:
print "pressed: CTRL + A"
elif mods & pygame.KMOD_ALT:
print "pressed: ALT + A"
else:
print "pressed: A"
pygame.quit()
बीटीडब्ल्यू: मेरे कंप्यूटर पर दाएं Alt के साथ समस्या है क्योंकि यह देशी वर्णों के लिए उपयोग किया जाता है। यह KMOD_ALT
और KMOD_RALT
साथ काम नहीं करता।
यदि यह एक जीयूआई के लिए है।
from Tkinter import *
class Application(Frame):
def __init__(self, parent):
Frame.__init__(self,parent)
self.grid()
self.create_widgets()
def create_widgets(self):
widg = Text(self)
widg.grid(row=0,column=0)
self.bind_all("<Control-a>", self.check) #This checks if lower case a is pressed
self.bind_all("<Control-A>", self.check) #This checks if upper case a is pressed
def check(self, event): #Make sure to have event inside the function
print("Control-a pressed")
root = Tk()
app = Application(root)
root.mainloop()
अरे हाँ, माफ करना, मैं उल्लेख किया जाना चाहिए था यह pygame के लिए किया गया था, कि अगर एक फर्क नहीं पड़ता ... – ZenLogic
@ZenLogic अगर इसकी pygame के लिए मुझे पता नहीं खेद है। –
pygame के लिए आप keydown के बजाय get_pressed की तलाश की जानी चाहिए cuz keydown केवल एक बार होता, कुंजी दबाए होता है जब तक कुंजी जारी की है।
दो कुंजी के लिए दबाए गए बस एक if-stament करें।
# store the result of the get_pressed() in those variables.
if key_ctrl_is_down and key_a_is_down:
dowhatever()
- 1. API-key
- 2. मैं जावास्क्रिप्ट में Shift + key को कैसे ढूंढ सकता हूं?
- 3. SendKeys.Send और Windows Key
- 4. TreeView TreeNodeCollection Key
- 5. XMonad mod key सत्र
- 6. <key> मूल्य
- 7. std :: std :: weak_ptr key
- 8. वैकल्पिक dict key-value
- 9. बचना map.get (key) विधि
- 10. mongodb shard key हैश एल्गोरिदम
- 11. ग्रहण: बदले ctrl + shift +/
- 12. समझौता __call__ और list.sort (key)
- 13. xmonad और Emacs: 'mod' key
- 14. Tkinter Mac-friendly मेनू शॉर्टकट्स (cmd + key)
- 15. LINQ ट्रांसफॉर्म शब्दकोश <key,value> शब्दकोश <value,key>
- 16. क्या `: key =>" value "` और `key:" value "` हैश नोटेशन के बीच कोई अंतर है?
- 17. .pem में .key को कैसे परिवर्तित करें?
- 18. ऐप की Info.plist में UIRequiredDeviceCapabilities Key
- 19. सी # जेएसओएन सीरियलाइजेशन {key: value, value, ...}
- 20. पर्ल: जबकि ($ key = प्रत्येक% हैश) कुंजी = 0
- 21. प्रश्न: ES6 map.keys() map.delete (key) के बाद
- 22. पायथन में, heapq.heapify cmp या key functions नहीं लेता है क्योंकि सॉर्ट किए गए तर्क जैसे
- 23. इंटेलिजे में शॉर्टकट Ctrl + Shift + G
- 24. std :: multimap <key, value> और std :: map <key, std :: set <value>>
- 25. क्या ConfigurationManager.AppSettings [Key] प्रत्येक बार web.config फ़ाइल से पढ़ता है?
- 26. KeyListeners और Key Bindings के बीच कार्यक्षमता की तुलना
- 27. डिबगिंग रोकें (Shift + F5)
- 28. परिवर्तित सूची <Map.Entry <Key, Value>> जावा
- 29. इसका क्या अर्थ है: key = lambda x: x [1]?
- 30. xsd: key और xsd के बीच अंतर: अद्वितीय
@ZenLogic मैं काम करने का उदाहरण जोड़ता हूं इसका उपयोग कैसे करें। – furas
यह काम नहीं कर रहा प्रतीत होता है, क्या आप देख सकते हैं कि मेरे कोड में क्या गलत है? इसे नोट के तेज संस्करण को खेलना चाहिए, लेकिन अभी भी खेलता है जैसे केवल 'ए' दबाया जाता है। 'current_played_sine = { 'एक #': MakeSineWave (277.18)} elif event.key == pygame.K_a और pygame.key.get_mods() & pygame.KMOD_SHIFT: प्रिंट current_type, 277.18 current_played_sine [ 'एक # '] .play (-1) ' – ZenLogic
शायद आप' elif event.key == pygame.K_a: '' से पहले elif event.key == pygame.K_a और pygame.key.get_mods() '- पहली सच भी है 'शिफ्ट + ए' के लिए। आप परिवर्तन आदेश है या बनाने के 'अगर pygame.key.get_mods() ...:' 'अंदर elif event.key == pygame.K_a:' मैं उदाहरण के लिए जल्द ही बनाया है। – furas