PyQt Formularze Webkit i html: Pobieranie danych wyjściowych i zamykanie okna
Próbuję uzyskać okno webkit PyQt pythona bez obramowania, aby wyświetlić pojedynczy formularz HTML. Po kliknięciu na wysyłkę wartości formularza należy zapisać w słowniku i zamknąć okno.
Do tej pory (z pomocą aWIĘC) Mam okno bez obramowania i mogę pobrać dane wejściowe. Jednak brakuje dwóch rzeczy:
Zamykanie okna po naciśnięciu Wyślij.Pobieranie danych wejściowych ze słownikaelements
(zauważ, że klawiszeelements
odpowiadają nazwom formularzy html).(potencjalnie odwrotnie byłoby lepiej, ale 1 wydaje się trudniejszy)
Mój dotychczasowy kod to:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
elements = {"like":"", "text": ""}
class MyWebPage(QWebPage):
def acceptNavigationRequest(self, frame, req, nav_type):
if nav_type == QWebPage.NavigationTypeFormSubmitted:
text = "<br/>\n".join(["%s: %s" % pair for pair in req.url().queryItems()])
print(text)
return True
else:
return super(MyWebPage, self).acceptNavigationRequest(frame, req, nav_type)
class Window(QWidget):
def __init__(self, html):
super(Window, self).__init__()
self.setWindowFlags(Qt.FramelessWindowHint)
view = QWebView(self)
layout = QVBoxLayout(self)
layout.addWidget(view)
view.setPage(MyWebPage())
view.setHtml(html)
# setup the html form
html = """
<form action="" method="get">
Like it?
<input type="radio" name="like" value="yes"/> Yes
<input type="radio" name="like" value="no" /> No
<br/><input type="text" name="text" value="Hello" />
<input type="submit" name="submit" value="Send"/>
</form>
"""
def main():
app = QApplication(sys.argv)
window = Window(html)
window.show()
app.exec_()
if __name__ == "__main__":
main()
Doskonała odpowiedź nie tylko pokaże, jak to zrobić(a) zapisz dane wejściowe i(b) zamknij okno, ale(c) usuń również pozostałą małą szarą ramkę wokół strony html.
Aktualizacja: Używam Pythona 2.