Еще одна возможность - использовать драйверы odbc, которые по умолчанию включены в расширения php, однако вам все равно придется раскомментировать их в вашем php.ini
.
extension=php_pdo_odbc.dll
Не забудьте перезапустить сервер после этого; -)
И затем используйте его следующим образом:
$db = new PDO('odbc:Driver={SQL Server};Server=192.168.x.x;Database=DatabaseName; Uid=User;Pwd=Password');
$stmt = $db->query("SELECT the_usual FROM aTable WHERE all='well'");
РЕШЕНИЕ
Путь, который содержит кнопки братьев и сестер, является self.parent.children
. С помощью этой информации вы можете изменить background_color
всех кнопок.
ПРИМЕР
def change_butt_color(self, *args):
for child in self.parent.children:
child.background_color = 1,1,1,1
self.background_color = 0,0,0,0
замечают, как кнопки не ищутся с помощью ids
. Вместо этого, self.parent.children
используется, чтобы найти родителей-пуговиц для детей, то есть для себя и для братьев и сестер (self
).
Используйте on_touch_down
, сбросьте background_color
и проверьте collide_point
Событие касания виджета »on_touch_down [ 1121]
on_touch_down (touch)
Получать событие касания.
Параметры:
touch: Класс MotionEventПрием касаний. Касание в родительских координатах. См. относительное расположение для обсуждения систем координат.
Возвращает: bool Если True, отправка события касания остановится. Если значение False, событие будет по-прежнему отправляться на остальную часть дерева виджетов.
blockquote>Управление вводом »Основные сведения о событиях касания
По умолчанию события касания отправляются всем отображаемым в данный момент виджетам. Это означает, что виджеты получают событие касания, независимо от того, происходит оно в своей физической области или нет.
...
Чтобы обеспечить максимальную гибкость, Kivy рассылает события всем виджетам и позволяет им решать, как на них реагировать. Если вы хотите отвечать только на события касания внутри виджета, вы просто проверяете:
blockquote>def on_touch_down(self, touch): if self.collide_point(*touch.pos): # The touch has occurred inside the widgets area. Do stuff! pass
Пузырьки событий касания виджета
< blockquote>Когда вы перехватываете события касания между несколькими виджетами, вам часто нужно знать порядок, в котором эти события распространяются. В Киви события всплывают от первого ребенка вверх через других детей. Если у виджета есть дочерние элементы, событие передается через его дочерние элементы, а затем передается в виджет после него.
blockquote>Пример
main.py
from kivy.app import App from kivy.uix.gridlayout import GridLayout from kivy.uix.button import Button from kivy.lang import Builder class CreateButton(Button): def on_touch_down(self, touch): if set(self.background_color) & set([0, 0, 0, 0]) == {0}: self.background_color = [1, 1, 1, 1] # default texture is grey if self.collide_point(*touch.pos): self.background_color = [0, 0, 0, 0] # black color class OnTouchDownDemo(GridLayout): def __init__(self, **kwargs): super(OnTouchDownDemo, self).__init__(**kwargs) self.build_board() def build_board(self): # make 9 buttons in a grid for i in range(0, 9): button = CreateButton(id=str(i)) self.add_widget(button) Builder.load_file('main1.kv') class OnTouchDownApp(App): def build(self): return OnTouchDownDemo() if __name__ == "__main__": OnTouchDownApp().run()
main.kv
#:kivy 1.11.0 <CreateButton>: font_size: 50 <OnTouchDownDemo>: rows: 3 cols: 3 row_force_default: True row_default_height: 150 col_force_default: True col_default_width: 150 padding: [10] spacing: [10]
Выход
[1119 ] [тысяча сто тридцать три]