前言:
现时我们对“python 创建窗口”可能比较看重,你们都需要知道一些“python 创建窗口”的相关知识。那么小编在网络上搜集了一些关于“python 创建窗口””的相关文章,希望看官们能喜欢,看官们快快来学习一下吧!主要介绍了Tkinter各组件类之间继承关系,能够更好的了解Tkinter组件,同时列举两个Tkinter入门示例,简单快速构建图形界面程序!
Tkinter组件继承关系
在创建Tkinter实例之前,先说一下Tkinter组件之间继承关系
Tkinter组件继承关系
说明:
Tkinter 有两个根父类,它们直接继承了object类Misc:所有组件的根父类Wm:提供了一些与窗口管理器通信的功能函数对于 Misc 和 Wm 两个基类而言,它们是所有Tkinter组件的父类,所有组件都可以直接使用它们的方法Tk:是Misc 和 Wm 派生的子类 ,它是应用程序的主窗口,Tkinter GUI编程通常都需要直接或间接使用Tk类BaseWidget:是所有组件的基类Widget:代表一个通用的 GUI 组件,它继承于BaseWidget父类,所有组件都是 Widget 的子类Pack、Place、Grid:是布局管理器类,负责管理所包含的组件的大小和位置摆放,并派生出来Widget子类
组件介绍:
窗口、容器、组件关系
任何窗口可由若干个容器组成,而容器里填充着各种基本组件,通过设置基本组件的属性(大小、位置等),便可形成有交互能力用户图形界面
一个窗口由一个或多个容器组成每个容器又由一个或多个组件组成窗口、容器、组件构成了一个完整的用户图形界面
创建Tk窗口示例
# -*- coding:utf-8 -*-from Tkinter import * if __name__ == "__main__": # 创建Tk对象,即主窗口 mw = Tk() # 设置窗口标题 mw.title('Tkinter入门示例') # 创建Label标签,第一个参数意思是,将label标签对象加入主窗口mw中 w = Label(mw, text="Hello World!Hello Tkinter!") # 布局设置 w.pack() # 启动主窗口循环 mw.mainloop()
示例代码创建了两个对象Tk 和 Label,Tk是主窗口,Label是文本标签,将Label对象加入到Tk主窗口中
有关Tkinter包导入,在Python 2.x 使用from Tkinter import *在Python 3.x 使用from Tkinter import *
另一种方式是不直接使用Tk,只要创建Frame的子类,其子类会自动创建Tk对象作为窗口,示例如下:
# -*- coding:utf-8 -*-from Tkinter import *class App(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack() # 调用initWidgets()初始化界面 self.initWidgets() def initWidgets(self): # 创建Label组件,第一个参数将该Label放入主窗口 w = Label(self) # 创建位图 self.bm = PhotoImage(file = 'logo.png') # 设置Label背景图片 w['image'] = self.bm w.pack() # 创建Button组件,第一个参数将该Button放入主窗口 okButton = Button(self, text="确定") # 设置Button的背景色 okButton['background'] = 'green' okButton.pack()if __name__ == "__main__": # 创建App对象 app = App() # Frame有个默认的master属性,该属性值是Tk对象(窗口) print(type(app.master)) # 设置窗口标题 app.master.title('Tkinter入门示例') # 启动主窗口的消息循环 app.mainloop()
补充说明:
初始化窗口分三个过程:创建组件、添加组件、配置组件配置组件,可以在初始化配置,也可以在创建完成后配置,如:初始化配置 okbtn = Button(self, text="确定")创建后配置 okbtn['text'] = "确定",以字典形式配置,完全等价还可以这样配置 okbtn.configure(text = "确定"), 完全等价,自由切换使用创建GUI组件很简单,需要至少指定一个参数,用于指定GUI组件属于哪个容器(Tk组件例外,因为该组件代表顶级窗口)程序在创建任意Widget组件时,没有指定master属性(即创建Widget组件时第一个参数传入None),那么程序会自动为该Widget组件创建一个Tk窗口
标签: #python 创建窗口