def __init__(self):
super().__init__()
self.width = 5000
self.height = 4000
self.margin = 10
self.keys = {
Qt.Key_W: False,
Qt.Key_A: False,
Qt.Key_S: False,
Qt.Key_D: False,
} # This will be modified by View, and be read by GuiClient
self.mouseDown = False
self.mousePos = QPoint()
self.decaying = []
self.setSceneRect(5, 5, self.width, self.height)
self.polygons = ObjectTracker()
self.heroes = ObjectTracker()
self.bullets = ObjectTracker()
self.experienceBar = ExperienceBar()
self.addItem(self.experienceBar)
self.scoreboard = Scoreboard()
self.addItem(self.scoreboard)
python类Key_S()的实例源码
def action(self, **kwds):
x = y = 0
if self.scene.keys[Qt.Key_W]:
y -= 1
if self.scene.keys[Qt.Key_A]:
x -= 1
if self.scene.keys[Qt.Key_S]:
y += 1
if self.scene.keys[Qt.Key_D]:
x += 1
if x or y:
self.accelerate(math.atan2(y, x))
mpos = self.scene.views()[0].mapToScene(self.scene.mousePos)
self.shoot_at(
mpos.x(), mpos.y(),
rotate_only=not self.scene.mouseDown)
try:
while True:
self.level_up(self.to_level_up.pop())
except IndexError:
pass
def keyPressEvent(self, QKeyEvent):
if QKeyEvent.key() == Qt.Key_S and QKeyEvent.modifiers() == Qt.ControlModifier:
self.saveProjectDialog()
else:
super(PyreeMainWindow, self).keyPressEvent(QKeyEvent)
def keyPressEvent(self, event):
key_handlers = {
Qt.Key_1: self.select_number(1),
Qt.Key_2: self.select_number(2),
Qt.Key_3: self.select_number(3),
Qt.Key_4: self.select_number(4),
Qt.Key_5: self.select_number(5),
Qt.Key_6: self.select_number(6),
Qt.Key_7: self.select_number(7),
Qt.Key_8: self.select_number(8),
Qt.Key_9: self.select_number(9),
Qt.Key_0: self.select_number(0),
Qt.Key_A: self.start_edit(self.goals.add, 'Add new goal'),
Qt.Key_C: self.with_refresh(self.goals.toggle_close),
Qt.Key_D: self.with_refresh(self.goals.delete),
Qt.Key_I: self.start_edit(self.goals.insert, 'Insert new goal'),
Qt.Key_L: self.with_refresh(self.goals.toggle_link),
Qt.Key_Q: self.quit_app.emit,
Qt.Key_R: self.start_edit(self.goals.rename, 'Rename goal'),
Qt.Key_S: self.with_refresh(self.goals.swap_goals),
Qt.Key_V: self.toggle_view,
Qt.Key_Z: self.toggle_zoom,
Qt.Key_Escape: self.cancel_edit,
Qt.Key_Space: self.with_refresh(self.goals.hold_select),
}
if event.key() in key_handlers:
key_handlers[event.key()]()
else:
super().keyPressEvent(event)
def set_up_keyboard_keys(self):
row_1 = [Qt.Key_Q, Qt.Key_W, Qt.Key_E, Qt.Key_R, Qt.Key_T, Qt.Key_Y,
Qt.Key_Y, Qt.Key_I, Qt.Key_O, Qt.Key_P, Qt.Key_Backspace]
row_2 = [Qt.Key_A, Qt.Key_S, Qt.Key_D, Qt.Key_F, Qt.Key_G, Qt.Key_H,
Qt.Key_J, Qt.Key_K, Qt.Key_L, Qt.Key_Ccedilla, Qt.Key_Return]
row_3 = [Qt.Key_Aring, Qt.Key_Z, Qt.Key_X, Qt.Key_C, Qt.Key_V,
Qt.Key_B, Qt.Key_N, Qt.Key_M, Qt.Key_Comma, Qt.Key_Period,
Qt.Key_Question, Qt.Key_Aring]
row_4 = [Qt.Key_Aring, Qt.Key_Space,
Qt.Key_Left, Qt.Key_Right, Qt.Key_Aring]
self.keyboard_keys = [row_1, row_2, row_3, row_4]
def keyPressEvent(self, event):
"""Keyboard press event
Effective key: W, A, S, D, ?, ?, ?, ?
Press a key on keyboard, the function will get an event, if the condition is met, call the function
run_action().
Args:
event, this argument will get when an event of keyboard pressed occured
"""
key_press = event.key()
# don't need autorepeat, while haven't released, just run once
if not event.isAutoRepeat():
if key_press == Qt.Key_Up: # up
run_action('camup')
elif key_press == Qt.Key_Right: # right
run_action('camright')
elif key_press == Qt.Key_Down: # down
run_action('camdown')
elif key_press == Qt.Key_Left: # left
run_action('camleft')
elif key_press == Qt.Key_W: # W
run_action('forward')
elif key_press == Qt.Key_A: # A
run_action('fwleft')
elif key_press == Qt.Key_S: # S
run_action('backward')
elif key_press == Qt.Key_D: # D
run_action('fwright')
def keyReleaseEvent(self, event):
"""Keyboard released event
Effective key: W,A,S,D, ?, ?, ?, ?
Release a key on keyboard, the function will get an event, if the condition is met, call the function
run_action().
Args:
event, this argument will get when an event of keyboard release occured
"""
# don't need autorepeat, while haven't pressed, just run once
key_release = event.key()
if not event.isAutoRepeat():
if key_release == Qt.Key_Up: # up
run_action('camready')
elif key_release == Qt.Key_Right: # right
run_action('camready')
elif key_release == Qt.Key_Down: # down
run_action('camready')
elif key_release == Qt.Key_Left: # left
run_action('camready')
elif key_release == Qt.Key_W: # W
run_action('stop')
elif key_release == Qt.Key_A: # A
run_action('fwstraight')
elif key_release == Qt.Key_S: # S
run_action('stop')
elif key_release == Qt.Key_D: # D
run_action('fwstraight')
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.tape = []
self.tape_pos = -1
self.style_sheet = None
self.search_bar = QLineEdit(self)
self.search_bar.textChanged.connect(self.onSearchTextChanged)
self.style_text_edit = QTextEdit(self)
self.style_text_edit.textChanged.connect(self.onStyleTextChanged)
# To prevent messing with contents when pasted from an IDE, for
# instance.
self.style_text_edit.setAcceptRichText(False)
self.apply_button = QPushButton('Apply', self)
self.apply_button.clicked.connect(self.onApplyButton)
layout = QVBoxLayout(self)
layout.addWidget(self.search_bar)
layout.addWidget(self.style_text_edit)
layout.addWidget(self.apply_button)
self.setLayout(layout)
next_hit_shortcut = QShortcut(QKeySequence(Qt.Key_F3), self)
next_hit_shortcut.activated.connect(self.onNextSearchHit)
search_shortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F), self)
search_shortcut.activated.connect(self.onFocusSearchBar)
apply_shortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_S), self)
apply_shortcut.activated.connect(self.applyStyleSheet)
undo_shortcut = QShortcut(
QKeySequence(Qt.CTRL + Qt.ALT + Qt.Key_Z), self)
undo_shortcut.activated.connect(self.onUndo)
redo_shortcut = QShortcut(
QKeySequence(Qt.CTRL + Qt.ALT + Qt.Key_Y), self)
redo_shortcut.activated.connect(self.onRedo)
help_shortcut = QShortcut(
QKeySequence(Qt.Key_F1), self)
help_shortcut.activated.connect(self.onHelp)
self.loadStyleSheet()
def keyPressEvent(self, event):
"""Keyboard press event
Press a key on keyboard, the function will get an event, if the condition is met, call the function
run_action().
In camera calibration mode, Effective key: W,A,S,D, ?, ?, ?, ?, ESC
In front wheel calibration mode, Effective key: A, D, ?, ?, ESC
In back wheel calibration mode, Effective key: A, D, ?, ?, ESC
Args:
event, this argument will get when an event of keyboard pressed occured
"""
key_press = event.key()
if key_press in (Qt.Key_Up, Qt.Key_W): # UP
if self.calibration_status == 1:
cali_action('camcaliup')
elif self.calibration_status == 2:
pass
elif self.calibration_status == 3:
pass
elif key_press in (Qt.Key_Right, Qt.Key_D): # RIGHT
if self.calibration_status == 1:
cali_action('camcaliright')
elif self.calibration_status == 2:
cali_action('fwcaliright')
elif self.calibration_status == 3:
cali_action('bwcaliright')
elif key_press in (Qt.Key_Down, Qt.Key_S): # DOWN
if self.calibration_status == 1:
cali_action('camcalidown')
elif self.calibration_status == 2:
pass
elif self.calibration_status == 3:
pass
elif key_press in (Qt.Key_Left, Qt.Key_A): # LEFT
if self.calibration_status == 1:
cali_action('camcalileft')
elif self.calibration_status == 2:
cali_action('fwcalileft')
elif self.calibration_status == 3:
cali_action('bwcalileft')
cali_action('forward')
elif key_press == Qt.Key_Escape: # ESC
run_action('stop')
self.close()
def create_ui(self):
w = QWidget(self)
settings_group = QGroupBox(t("", default="Configuration"), w)
settings_group_l = QVBoxLayout(settings_group)
settings = SettingsTabs()
settings_group_l.addWidget(settings)
buttons = QGroupBox(w)
self.server_btn = QPushButton(self.start_ico, t("", default="Start server"))
self.server_btn.clicked.connect(self.toggle_server)
self.server_btn.setShortcut(Qt.CTRL | Qt.Key_S)
#self.webclient_btn = QPushButton(self.start_ico, t("", default="Start webclient"))
# self.webclient_btn.clicked.connect(self.toggle_client)
# self.webclient_btn.setShortcut(Qt.CTRL|Qt.Key_W)
open_config_btn = QPushButton(qta.icon("fa.cogs"), t("", default="Open configuration"))
open_config_btn.clicked.connect(self.open_cfg)
open_config_btn.setShortcut(Qt.CTRL | Qt.Key_C)
convert_btn = QPushButton(qta.icon("fa.refresh"), t("", default="HP to HPX"))
convert_btn.clicked.connect(self.convert_hp)
for b in (self.server_btn, open_config_btn, convert_btn):
b.setFixedHeight(40)
button_layout = QHBoxLayout(buttons)
button_layout.addWidget(self.server_btn)
# button_layout.addWidget(self.webclient_btn)
button_layout.addWidget(open_config_btn)
button_layout.addWidget(convert_btn)
infos = QGroupBox(t("", default="Info"))
info_layout = QHBoxLayout(infos)
version_layout = QFormLayout()
version_layout.addRow(t("", default="Server version") +
':', QLabel(".".join(str(x) for x in constants.version)))
version_layout.addRow(t("", default="Webclient version") +
':', QLabel(".".join(str(x) for x in constants.version_web)))
version_layout.addRow(t("", default="Database version") +
':', QLabel(".".join(str(x) for x in constants.version_db)))
connect_layout = QFormLayout()
connect_layout.addRow(t("", default="Server") + '@', QLabel(config.host.value + ':' + str(config.port.value)))
connect_layout.addRow(t("", default="Webclient") + '@',
QLabel(config.host_web.value + ':' + str(config.port_web.value)))
info_layout.addLayout(connect_layout)
info_layout.addLayout(version_layout)
main_layout = QVBoxLayout(w)
main_layout.addWidget(settings_group)
main_layout.addWidget(infos)
main_layout.addWidget(buttons)
self.setCentralWidget(w)
self.tray.setIcon(QIcon(os.path.join(constants.dir_static, "favicon.ico")))
self.tray.activated.connect(self.tray_activated)
tray_menu = QMenu()
tray_menu.addAction(t("", default="Show"), lambda: self.show())
tray_menu.addSeparator()
tray_menu.addAction(t("", default="Quit"), lambda: self.real_close())
self.tray.setContextMenu(tray_menu)