• 18-03-2024, 15:06:57
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bir Websitem var bunu webview le exe haline getirmek istiyorum nasıl yapabilirim bilgisi olan varmı
  • 18-03-2024, 15:12:19
    #2
    Exe yapmanıza gerek yok PWA yapabilirsiniz: https://web.dev/explore/progressive-web-apps?hl=tr
  • 18-03-2024, 15:13:21
    #3
    import sys

    from cefpython3 import cefpython as cef


    from PyQt5.QtCore import QTimer
    from PyQt5.QtGui import QWindow
    from PyQt5.QtWidgets import QApplication, QFrame, QGridLayout, QMainWindow, QVBoxLayout, QWidget

    from navbar import NavigationBar


    class ChromiumApplication(QApplication):
    def __init__(self):
    super().__init__([])
    self.timer = self.create_timer()

    def create_timer(self):
    timer = QTimer()
    timer.timeout.connect(self.on_timeout)
    timer.start(10)
    return timer

    def on_timeout(self):
    cef.MessageLoopWork()


    class ChromiumBrowserWindow(QMainWindow):
    DEFAULT_TITLE = "Chromium Browser"
    DEFAULT_WIDTH = 800
    DEFAULT_HEIGHT = 600

    def __init__(self):
    super().__init__()
    self.chrome = None
    self.web_view = None
    self.setWindowTitle(self.DEFAULT_TITLE)
    self.init_window()
    self.show()

    def init_window(self):
    self.resize(self.DEFAULT_WIDTH, self.DEFAULT_HEIGHT)

    self.web_view = WebViewWidget()
    self.chrome = NavigationBar(parent=self, browser=self.web_view.browser)

    frame = QFrame()
    self.setCentralWidget(frame)
    layout = QGridLayout(frame)
    layout.addWidget(self.chrome, 0, 0)
    layout.setColumnStretch(0, 1)

    layout.addWidget(self.web_view, 1, 0)
    layout.setRowStretch(1, 2)

    layout.setContentsMargins(0, 0, 0, 0)

    def closeEvent(self, event):
    if self.web_view.browser is not None:
    self.web_view.browser.CloseBrowser(True)
    del self.web_view.browser


    class WebViewWidget(QWidget):
    DEFAULT_URL = "https://www.google.com"
    HANDLERS = []

    def __init__(self, parent=None):
    super().__init__(parent)
    self._browser = None
    self._browser_widget = None
    lay = QVBoxLayout(self)
    lay.setContentsMargins(0, 0, 0, 0)
    self.init_browser()

    @property
    def browser(self):
    return self._browser

    @browser.deleter
    def browser(self):
    self._browser = None

    def init_browser(self):
    browser_window = QWindow()
    window_config = cef.WindowInfo()
    window_config.SetAsChild(
    int(browser_window.winId()), list(self.rect().getRect())
    )
    self._browser = cef.CreateBrowserSync(window_config, url=self.DEFAULT_URL)
    self._browser_widget = QWidget.createWindowContainer(browser_window)
    self.layout().addWidget(self._browser_widget)
    self.set_handlers()

    def set_handlers(self):
    for handler in self.HANDLERS:
    self.browser.SetClientHanlder(handler(self))

    def resizeEvent(self, event):
    if self.browser and self._browser_widget:
    self.browser.SetBounds(*self._browser_widget.geome try().getRect())
    self.browser.NotifyMoveOrResizeStarted()


    if __name__ == "__main__":
    sys.excepthook = cef.ExceptHook
    cef.Initialize()
    app = ChromiumApplication()
    window = ChromiumBrowserWindow()
    app.exec()
    app.timer.stop()
    cef.Shutdown()



    pythonda bu şekilde yapaiblirsin diğerlerinde de sanırım frame olarak geçiyordu tam emin olmamakla birlikte