Ich werde darüber schreiben, was ich versucht habe, das Verhalten des UI-Moduls zu verstehen, das mit Pythonista 3 unter iOS geliefert wird.
Python-Ausführungsumgebung & Editor & Interprinter unter iOS. Die Interpolationsfunktion und die Konsole, mit der Sie den Inhalt von Variablen überprüfen können, sind hervorragende Dinge, die Sie dort erreichen können, wo es juckt.
Dies ist ein Standardmodul, das in Pythonista enthalten ist. Es ist nicht multifunktional, aber es enthält das Nötigste.
Es gibt ein GUI-Tool namens UI Designer, aber ich möchte nur mit Skripten damit herumspielen.
Auf dem Bildschirm wird nichts angezeigt, aber es ist ein schönes (?) UI-Programm
ui01.py
import ui
v = ui.View()
v.present('panel')
Wenn ich es starte, erscheint nichts auf dem Bildschirm.
Ich bin einsam, wenn nichts getan wird, also lasst uns Hallo Welt anzeigen.
ui02.py
import ui
#Hello World
v = ui.View()
l = ui.Label()
l.text = 'Hello World'
v.add_subview(l)
v.present('panel')
Fügen Sie einen Rahmen hinzu, um das Verständnis zu erleichtern.
ui03.py
import ui
#Hello World
v = ui.View()
l = ui.Label()
l.text = 'Hello World'
l.border_width = 2
v.add_subview(l)
v.present('panel')
Ich dachte nicht, dass es ein Quadrat ist.
Wenn es so belassen würde, wie es war, würde es überlappend angezeigt, sodass das zweite die Koordinaten spezifizierte.
ui04.py
import ui
#Hello World
v = ui.View()
l = ui.Label()
l.text = 'Hello'
l.border_width = 2
v.add_subview(l)
l2 = ui.Label()
l2.text = 'World'
l2.border_width = 2
l2.x = 50
l2.y = 110
v.add_subview(l2)
v.present('panel')
Verteilen Sie es über das gesamte Panel.
Nachtrag Die Angabe von "WH" für "Flex" bedeutete nicht, es überall zu verteilen. .. .. Dazu später mehr
ui05.py
import ui
#Hello World
v = ui.View()
l = ui.Label()
l.text = 'Hello World'
l.border_width = 2
l.flex = 'WH'
v.add_subview(l)
v.present('panel')
Die Zeichen werden nach links verschoben, da die Beschriftungsausrichtung nicht angegeben ist.
Es fühlt sich an, als könnten Sie scrollen, wenn der Inhaltsbereich (content_size) größer als der Ansichtsbereich ist. Es scheint, dass Sie sich den Bereich der Ansicht ansehen, um ihn mithilfe von Flex automatisch zu erweitern und zu verkleinern. Daher müssen Sie möglicherweise vorsichtig sein, wie Sie contnt_size angeben.
ui06.py
import ui
label_count = 10
label_height = 100
v = ui.ScrollView()
v.content_size = (100, label_count * label_height)
for i in range(label_count):
l = ui.Label()
l.text = 'TestLabel:' + str(i)
l.y = i * label_height
l.border_width = 2
l.flex = 'W'
v.add_subview(l)
v.present('panel')
Erstellen und überprüfen Sie den Zeitpunkt des Neuzeichnens und die Häufigkeit von Ereignissen. Wenn das Bedienfeld vorhanden ist, wird das Berührungsereignis möglicherweise nicht gut aufgenommen. Überprüfen Sie dies daher im Vollbildmodus. (Es scheint der Effekt zu sein, den Bildschirm durch Wischen nach links und rechts zu wechseln.)
ui07.py
import ui
class MyView(ui.View):
def __init__(self):
l = ui.Label(name='poslabel')
l.background_color = '#dddddd'
l.flex = 'W'
l.height = 50
self.add_subview(l)
l2 = ui.Label(name='loglabel')
l2.background_color = '#ddddff'
l2.flex = 'W'
l2.number_of_lines = 0
l2.y = l.height
l2.height = 600 - l.height
self.add_subview(l2)
self.m_logs = []
pass
def log_msg(self, msg):
self.m_logs.append(msg)
self['loglabel'].text = "\n".join(self.m_logs[-20:])
def log_touch(self, touch):
self['poslabel'].text = str(touch.location)
def did_load(self):
self.log_msg('did_load called.')
def will_close(self):
self.log_msg('will_close called.')
def draw(self):
self.log_msg('draw called.')
def layout(self):
self.log_msg('layout called.')
def touch_began(self, touch):
self.log_msg('touch_began called.' + str(touch.location))
self.log_touch(touch)
def touch_moved(self, touch):
self.log_msg('touch_moved called.' + str(touch.location))
self.log_touch(touch)
def touch_ended(self, touch):
self.log_msg('touch_ended called.' + str(touch.location))
self.log_touch(touch)
v = MyView()
v.present('fullscreen')
Ich habe Flex völlig missverstanden. Passt flex seine Größe automatisch an, wenn sich die Größe der Eltern ändert? Selbst wenn ich "WH" angegeben habe, wollte ich nicht die Größe des Elternteils anpassen, um meine Größe entsprechend der Änderung der Größe des Elternteils zu ändern.
In ui06.py schien sich über den gesamten Bildschirm zu verteilen, dass ich einem Kind mit einer Ansicht mit einer Standardgröße von 100 x 100 eine Beschriftung mit einer Größe von 100 x 100 hinzugefügt habe. Wenn also die übergeordnete Größe mit Gegenwart im Vollbildmodus angezeigt wird, auch das Kind Es wurde nur gedehnt und vergrößert.
Sie können es sehen, indem Sie Folgendes tun. Das Kommentieren des Teils, der Breite und Höhe zuweist, wird sich wahrscheinlich so verhalten, wie die meisten Leute es erwartet hätten.
ui08.py
import ui
v = ui.View()
v.border_color = '#ff0000'
v.border_width = 2
v.background_color = '#999999'
v.present('fullscreen')
l = ui.Label()
l.border_width = 2
l.flex = 'WH'
l.text = 'Label'
#l.width = v.width
#l.height = v.height
v.add_subview(l)
Recommended Posts