
我们先创建一个tk窗口#-- coding:utf-8 --import tkinter#小编这里是python3,使用python2的小伙伴把tkinter换成Tkinter即可,否则报错哦win = tkinterTk()winmainloop()这样我们就创建了一个tk窗口,尽管这个窗口什么都没有。
我们要用到的方法是tk对象提供的winfo_width和winfo_height,从字面上我们都可以理解:winfo_width获得窗口的宽度,winfo_height获得窗口的高度。以上两个方法都是无参方法,通过返回值我们可以获得窗口的宽高。OK,我们插入代码print("当前窗口的宽度为",winwinfo_width())print("当前窗口的高度为",winwinfo_height())
未经芝士统回答便允许不得转载本何文内容,否则将视有为侵可权
这里很多小伙伴就会问了,为什么是1?窗口的宽高绝对不是1。没错,但是程序并没有做错,我们只是少了点什么?我们需要刷新窗口数据,如果小伙伴经常使用tk这个图形库,就会知道,我们使用winfo_width和winfo_height得到的宽高其实是tk初始化时的一个值。此时我们调用update方法,刷新win窗口。winupdate()快看,是不是成功获得了窗口的宽高?
我们可以自定义窗口大小来看数据是否正确。例如小编这里设置窗口大小 = 100 x 100,即宽100px高100pxwingeometry("100x100")这里可能又有小伙伴会问了,为什么宽度又出错了?其实很简单,因为tk帮我们创建了窗口装饰器,装饰器有以下几个部分:图标、标题、最大化、最小化和关闭按钮这些装饰器占据了16个px,其实是15个,还有1个px像素点是作为窗口和装饰器之间的距离红色标记部分所有代码为:#-- coding:utf-8 --import tkinterwin = tkinterTk()wingeometry("100x100")winupdate()print("当前窗口的宽度为",winwinfo_width())print("当前窗口的高度为",winwinfo_height())winmainloop()
pltfigure('测试') # 字符串或数字 作为figure窗口的标题
pltplot(x, y)
pltshow()
---
Python 373 可行。
给你一个思路。用 python 的 win32gui 可以枚举所有窗口句柄,想办法获取窗口句柄,然后通过 GetWindowText() 方法来获取窗口的标题,也就是结果所在的窗口句柄。
我用WIN32试了一下,我是hook了鼠标所在的句柄,但当鼠标指向结果时,结果的窗口句柄获取不到,只能获取到结果窗口的上一个窗口的句柄(也就是你图中的00280756的句柄),但可以通过枚举子窗口来获取(也就是枚举你中的002F0854句柄),然后经过一系列匹配和判断最终得到结果的值。
# encoding: gb2312import 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控件就是结果的控件。
hwnd=win32guiFindWindow('QWidget',None)
print 'hwnd:',hwnd
timesleep(1)
win32guiEnableWindow(hwnd,True)
win32guiSetForegroundWindow(hwnd)
例子:
代码如下:
#!/usr/bin/python
# -- coding: GBK --
# simplepy
import wx
app = wxApp()
frame = wxFrame(None)
frameShow()
appMainLoop()
例2,
代码如下:
#!/usr/bin/python
告诉程序 python 解释器的路径,只是在 linux 系统下有用,在 Windows 下写上这行代码不起作用,但是也没问题
# -- coding: GBK --
告诉 python 系统字符编码,这样我们就可以在程序中使用中文汉字了,如果没有这一行就是乱码。Windows 下是 GBK,Linux 下是UTF-8
app = wxApp()
初始化应用程序
frame = wxFrame(None)
frameShow()
创建一个 Frame (就是窗体),并显示出来。
appMainLoop()
应用程序进入消息循环
Frame 其实就是窗体,前面生成窗体时没有给他任何参数,只生成了一个默认的窗体,生成默认窗体的代码:
frame = wxFrame(None)
其实 wxFrame 可以传入很多参数,由此来控制生成窗体的样式和行为,现在来看看 Frame构造函数的原型:
__init__(self, Window parent, int id=-1, String title=EmptyString,
Point pos=DefaultPosition, Size size=DefaultSize,
long style=DEFAULT_FRAME_STYLE, String name=FrameNameStr)
参数1:parent
当前窗口的父窗口,如果当前窗口是top-level window的话,则parent=None,如果不是顶层窗口,则它的值为所属frame的名字
参数2:id
窗体编号。如果设置为-1,则系统自动给他分配一个编号。默认为-1
参数3:title
窗体的标题栏,即Caption。默认为空。
参数4:pos
窗体的位置坐标。默认值为(-1,-1),则窗体的位置由系统决定。
参数5:size
窗体的大小。默认值为(-1,-1),则窗体的大小由系统决定。
参数6:style
窗体样式。默认值为 DEFAULT_FRAME_STYLE
默认样式 DEFAULT_FRAME_STYLE 是下面这些值的复合:
wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxRESIZE_BORDER |
wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN
它包括最小化按钮、最大化按钮、系统菜单、标题栏、关闭按钮、可变大小等等。您也可以根据自己的需求改变样式,具体请参照帮助。
参数7:name
窗体名称。
可以看到,7个参数中6个都有默认值,只有第一个参数 parent 需要设置一下,所以一个最简单的窗体就是:
Python代码 收藏代码
frame = wxFrame(None)
窗体标题:
Python代码 收藏代码
frame = wxFrame(None,title="Hello World")
位置和大小:
Python代码 收藏代码
frame = wxFrame(None,title="世界你好",size=(300,150),pos=(200,200))
样式一:只有一个光秃秃的标题栏
Python代码 收藏代码
frame = wxFrame(None,style=wxCAPTION)
样式二:只有客户区,没有标题栏,也不能改变大小
Python代码 收藏代码
frame = wxFrame(None,style=0)
样式三:只有一个关闭按钮,不能改变大小
代码如下:
frame = wxFrame(None,style= wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX)
wxDEFAULT_FRAME_STYLE :这是每个窗口的缺省风格,包含标题、可调节大小的边框,最大最小化按钮、关闭按钮和系统菜单。
wxCAPTION :在框架上增加一个标题栏,它显示该框架的标题属性。
wxCLOSE_BOX :指示系统在框架的标题栏上显示一个关闭框,使用系统默认的位置和样式。
WxFRAME_ON_TOP : 置顶窗口
w xFRAME_SHAP ED :用这个样式创建的框架可以使用SetShape()方法去创建一个非矩形的窗口。
wxFRAME_TOOL_WINDOW :通过给框架一个比正常更小的标题栏,使框架看起来像一个工具框窗口。在Windows下,使用这个样式创建的框架不会出现在显示所有打开窗口的任务栏上。
wxMAXIMIZE_BOX :指示系统在框架的标题栏上显示一个最大化框,使用系统默认的位置和样式。
wxMINIMIZE_BOX :指示系统在框架的标题栏上显示一个最小化框,使用系统默认的位置和样式。
wxRESIZE_BORDER :给框架增加一个可以改变尺寸的边框。
wxSIMPLE_BORDER :没有装饰的边框。不能工作在所有平台上。
wxSYSTEM_MENU :增加系统菜单(带有关闭、移动、改变尺寸等功能)和关闭框到这个窗口。在系统菜单中的改变尺寸和关闭功能的有效性依赖于wxMAXIMIZE_BOX, wxMINIMIZE_BOX和wxCLOSE_BOX样式是否被应用。
wxFRAME_EX_META :如果时在 MacOS 中,这个属性用于是否显示“金属风格”
wxFRAME_EX_CONTEXTHELP :是否有联机帮助按钮。
wxFRAME_FLOAT_ON_PARENT :窗口是否显示在最上层,与 wxSTAY_ON_TOP 不同,它必须有一个父窗口。
1、首先双击打开pycharm开发工具,在已新建python项目中新建python文件。
2、使用fromimport方式导入tkinter,一种是python2中的方式,另一种是python3的。
3、接着创建一个Tk对象,这个对象代表一个窗口。
4、利用title属性设置窗口的标题内容,这里设置为新增用户。
5、调用pack进行布局,使用mainloop用于显示窗口。
6、保存代码并运行,结果出现了报错,提示python2的写法有问题;去掉python2的写法,然后再次保存运行,可以看到d出一个窗口就完成了。
以上就是关于在python中窗口的宽度是由什么来表示全部的内容,包括:在python中窗口的宽度是由什么来表示、python中怎么实现改figure标题的功能、用python win32 获得计算器里的计算结果等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)