Python tkinter中,怎么去除窗口的边框和标题栏

Python tkinter中,怎么去除窗口的边框和标题栏,第1张

我唯一想到的办法就是你试试不用frame,而是用button作为父窗口

另外relief 设置成FLAT, bd设置为0, 不显示标题的办法我也没有。

不过可以从win32的API上想办法。

获取窗口句柄可以用FindWindow来做到。获取windows的handle后。设置windows的style。

在dwStyle里将WS_CAPTION属性去掉。SetWindowLong这个函数应该有这个功能。

1、问题发生描述:

从一个页面进行点击等 *** 作,页面跳转到第二个页面,对第二个页面中的元素,采取任何措施定位都报错,问题报错点如下:

2、出现问题的原因:

窗口句柄还停留在上一个页面,对于当前新d出的页面还没有定位,因此新页面的任何元素都定位不到

3、解决方案:

在新页面 *** 作元素之前,需添加句柄 *** 作,方式如下:

1、使用drivercurrent_window_handle #获取当前窗口句柄,添加此方法,仍报相同的错误,因此不能采用这种方式进行解决问题

2、使用driverswitch_to_window(driverwindow_handles[1]),或者 driverswitch_to_window(selfdriverwindow_handles[-1]) ,两种方式中任选一种即可找到对应的元素

添加后的代码如下:

每天记录进步一点点

:获取目前窗口的层次,对于获取此窗口中指定的子窗口的句柄有非常重要的意义。此部分功能Pyspy++是无法提供的,因为它只提供一个子窗口,所以无法获得目前窗口的层次 例如我想获得OG2263登录界面的窗口层次方法如下: 使用1)中的方法将查找图标拖

给你一个思路。用 python 的 win32gui 可以枚举所有窗口句柄,想办法获取窗口句柄,然后通过 GetWindowText() 方法来获取窗口的标题,也就是结果所在的窗口句柄。

我用WIN32试了一下,我是hook了鼠标所在的句柄,但当鼠标指向结果时,结果的窗口句柄获取不到,只能获取到结果窗口的上一个窗口的句柄(也就是你图中的00280756的句柄),但可以通过枚举子窗口来获取(也就是枚举你中的002F0854句柄),然后经过一系列匹配和判断最终得到结果的值。

# encoding: gb2312

import win32gui

def _MyCallback( hwnd, extra ):

    hwnds = extra

    hwndsappend(hwnd)

def _CallBack(hwnd, extra):

    value, m_index = extra

    if win32guiGetClassName(hwnd) == 'Static':

        m_indexappend(None)

    

    if len(m_index) == 4:

        valueappend(win32guiGetWindowText(hwnd))

def TestEnumWindows():

    windows = []

    results = []

    win32guiEnumWindows(_MyCallback, (windows))

    i = 0

    for hwnd in windows:

        if win32guiGetClassName(hwnd) == 'CalcFrame':

            m_index = []

            win32guiEnumChildWindows(hwnd, _CallBack, (results, m_index))

        i += 1

    for result in results:

        print '计算器的结果为:' , result

TestEnumWindows()

这样更好一些,可能有些特征不同。我是枚举所有窗口,然后获取窗口的classname为CalcFrame的窗口,然后再枚举CalcFrame的子窗口,然后判断第4个出现的Static控件就是结果的控件。

selenium 每个窗口都有一个句柄,driver对象的window_handles属性可以返回当前浏览器窗口的句柄,可以理解为就是每个标签页的身份ID,获取到这个ID就可以对当前的标签页

首先,假设通过Firefox()浏览器定向爬取CSDN首页导航栏信息,审查元素代码如下图所示,在div class="menu"路径的ul、li、a下,同时可以定位ul class="clearfix"。

代码如下所示:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# coding=utf-8

import os

from selenium import webdriver

#PhantomJS无界面浏览器

##driver = webdriverPhantomJS(executable_path="G:\phantomjs-191-windows\phantomjsexe")

#打开火狐浏览器

driver = webdriverFirefox()

url = ">

算办公自动化的一个应用。

先获取窗口的句柄 >>遍历窗口下的所有控件>>通过输入框的特征,比如标识名称,找到对应的输入框>> *** 作输入框属性>>处理获取新字符串>>通过sendpost返回给另一个输入框

不知道你解决了没,最近正好研究python。

hwnd=win32guiFindWindow()这个获取窗体句柄,大概都会用;

ctrl=win32guiFindWindowEx(hwnd,None,'窗口类名',‘标题文本’)已知控件类名或控件名时获取控件句柄,这个标题文本不一定存在,所以使用None默认值获取的是该窗口类名中第一个顺位的控件句柄。

你使用b=win32guiGetDlgItem(edit,资源ID)最终结果是获取的是句柄,这里的资源ID其实是spy++中的窗口ID,句柄是可变的,窗口ID是不可变的。这里似乎错了,你这样子大概获取的是控件中的子项(控件有子项的话,比如Combox中的edit框),我猜的,没试过。b=win32guiGetDlgItem(hwnd,窗口ID)是已知ID下获取某控件句柄

如果你想获取某个控件的ID则ctrlid=win32guiGetDlgCtrlID(ctrl)这是一只某控件句柄的情况下获取该控件在应用程序中的窗口ID。

如果不知控件句柄的情况下大概可以试试spy++获取窗口ID,把窗口ID(这个是16进制的)转化成10进制带进b=win32guiGetDlgItem(hwnd,窗口ID)大概也可以得到控件句柄。

其实就是三个函数之间的转化

ctrl=win32guiFindWindowEx(hwnd,None,'edit',None)控件句柄

ctrlid=win32guiGetDlgCtrlID(ctrl)控件的窗口id

ctrl2=win32guiGetDlgItem(hwnd,ctrlid)控件句柄

print "%x" %ctrllist

print "%x" %ctrlid

print "%x" %ctrl

输出,看一下数据与spy++是否一致。然后ctrl=ctrl2

以上就是关于Python tkinter中,怎么去除窗口的边框和标题栏全部的内容,包括:Python tkinter中,怎么去除窗口的边框和标题栏、python+selenium怎么定位页面d窗的元素、python win32怎么获取窗体里面的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9566656.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存