【问题标题】:How to make frameless window resizable and snap able in pywebview? Also src files如何在 pywebview 中使无框窗口可调整大小和对齐?还有 src 文件
【发布时间】:2021-11-25 19:33:52
【问题描述】:

我正在制作一个 pyweview 桌面独立应用程序,我有 2 件我似乎找不到的东西。主要是如何获取它来查看本地src文件以及如何实现windows snap功能。我的意思是windows键+方向捕捉到屏幕的那一侧。我找到了一个用于调整大小的潜在 JS 选项,但尚未对其进行测试。

How to make frameless window draggable in pywebview?

这篇文章给了我让它可拖动的答案。

我可以使用图像之类的东西找到的所有示例都必须通过网络链接完成,并且有效,但是这个特定项目的重点是让它自包含,所以有没有办法让 html 加载本地文件?

html 是通过 window.load_html() 加载的,在 html 中我尝试了所有我能想到的文件路径,但到目前为止没有任何效果。即使使用完整的系统路径。 Bellow 是一个简单的示例,只需将 dots.svg 替换为您拥有的任何本地图像。如果 html 是自行加载的,它就可以正常工作。如果通过 pyweview 加载,则没有图像。我还是 JS 新手,但有没有办法使用 JS 加载图像?

import webview

html = """
<!DOCTYPE html>
<html lang="en">
    <h1>This is dynamically loaded HTML</h1>
    <body>
        <img src="images/dots.svg"> image should be here
    </body>
</html>
"""

def load_html(window):
    window.load_html(html)


if __name__ == '__main__':
    window = webview.create_window('Load HTML Example', html=html)
    webview.start(load_html, window)

【问题讨论】:

    标签: python html pywebview


    【解决方案1】:

    我是个笨蛋,这就是我拥有文件夹的方式。我正在编辑一个副本文件夹而不是主文件夹,所以当我运行它时它不会更新。至于调整大小,我在这里找到了解决方案

    https://awesomeopensource.com/project/DizzyduckAR/pywebview-Frameless-boilerplate

    它不会添加半屏快照,但会添加窗口调整大小。这是它进行调整大小的代码。它不像我想要的那么顺利,但它确实有效。

    #Resize Window
        def resizedrag(self):
            c = 1
            state_left = win32api.GetAsyncKeyState(0x01)
            beforex, beforey = pyautogui.position()
            beforex= str(beforex).rjust(4)
            beforey=str(beforey).rjust(4)
            # print(beforex,beforey)
            winWbefore=window.width
            winHbefore=window.height
            while True:
                a = win32api.GetAsyncKeyState(0x01) & 0x8000
                if a != state_left:
                    state_left = a
                    print(a)
                    if a != 0:
                        print('Left Button Pressed')
                    else:
                        print('Left Button Released')
                        break
    
                    
                print("running")
                afterx, aftery = pyautogui.position()
                afterx= str(afterx).rjust(4)
                aftery=str(aftery).rjust(4)
                try:
                    totalx=int(beforex)-int(afterx)
                    totaly=int(beforey)-int(aftery)
                    print('totals',totalx,totaly)
                except:
                    print('fail')
                if totalx > 0:
                    print('reduce x')
                  #  print(totalx*-1)
                    changerx=winWbefore+(totalx*-1)
                else:
                    print('expend x')
                    changerx=winWbefore+(totalx*-1)
                   # print(totalx*-1)
                
                if totaly > 0:
                    print('reduce y')
                   # print(totaly*-1)
                    changerY=winHbefore+(totaly*-1)
                else:
                    print('expend y')
                    #print(totalx*-1)
                    changerY=winHbefore+(totaly*-1)
                #
                print('changed',changerx, changerY)
                window.resize(changerx, changerY)
                time.sleep(0.1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      • 2017-08-17
      • 1970-01-01
      • 2012-01-28
      • 2017-09-16
      • 2018-10-01
      相关资源
      最近更新 更多