python的GUI初步学习(一)
首先需要安装用的python 库是tkinter.,在命令行中输入pip install tkinter
from tkinter import *
#实例化一个对象
root =Tk(className="标题")
root.mainloop()
其中class是窗口标题,mainloop是主窗口的成员函数,也就是表示让这个root能够工作,开始接收鼠标和键盘的操作(关闭缩小等操作)
#设置宽度不能变,高度可变
root.resizable(width=False,height=True)
对显示窗口位置的设定
from tkinter import *
root =Tk()
width =300
height =200
screenwidth =root.winfo_screenwidth()
screenheight =root.winfo_screenheight()
# print(screenwidth)
# print(screenheight)
position ='%dx%d+%d+%d'%(width,height,(screenwidth-width)/2,(screenheight-height)/2)
root.geometry(position)
root.mainloop()
现在有的外部窗口,下一步,需要在窗口里写入内容了
from tkinter import *
#实例化一个对象
root =Tk(className="标题")
# Label 显示文本和位图
label =Label(root) #获取标签
label['text'] ='hello world!'
label.pack() #打包显示的
root.mainloop()
接下来添加一个按钮
from tkinter import *
#实例化一个对象
root =Tk(className="标题")
# Label 显示文本和位图
label =Label(root) #获取标签
label['text'] ='hello world!'
label.pack() #打包显示的
#创建一个按钮
button =Button(root)
button['text'] ='按钮'
button.pack()
root.mainloop()
点击按钮没有任何反应,那么我们需要去设置点击之后所发生什么。
先定义一个函数,使点击后窗口内容发生改变,然后把函数名传给button中的command.
from tkinter import *
def on_click():
label['text'] ='成功点击按钮!'
#实例化一个对象
root =Tk(className="标题")
# Label 显示文本和位图
label =Label(root) #获取标签
label['text'] ='hello world!'
label.pack() #打包显示的
#创建一个按钮
button =Button(root)
button['text'] ='按钮'
button['command'] =on_click
button.pack()
root.mainloop()
那么,实现一个人下图的操作,点击按钮之后,hello world会修改为“设置字符串”样式
from tkinter import *
def on_click():
label['text'] =text.get()
#实例化一个对象
root =Tk(className="标题")
# Label 显示文本和位图
label =Label(root) #获取标签
label['text'] ='hello world!'
label.pack() #打包显示的
#定义一个可以改变的字符串
text =StringVar()
text.set('设置字符串')
#设置一个可以输入并且可以改变的文本框
entry =Entry(root)
entry['textvariable'] =text #使text为文本框的初始值
entry.pack()
#创建一个按钮
button =Button(root)
button['text'] ='按钮'
button['command'] =on_click
button.pack()
root.mainloop()
简单的一个GUI
from tkinter import *
def hello():
print('hello world!')
win =Tk() #定义窗体
win.title('hello world!') #窗体标题
win.geometry('400x300') #定义窗口大小
btn =Button(win,text='click me!',command=hello)
btn.pack(expand=YES,fill=BOTH) #fill充满整个窗体,expand是使按钮居中
mainloop()
分装成类,有两个按钮,点击QUTT,退出窗口,点击Hello,在控制台打印hi there,there is a class example!
from tkinter import *
class App:
def __init__(self,master):
frame =Frame(master)
frame.pack()
self.button =Button(frame,text='QUTT',fg='red',command=frame.quit)
self.button.pack(side=LEFT)
self.hi_there =Button(frame,text='Hello',command=self.say_hi)
self.hi_there.pack(side=LEFT)
def say_hi(self):
print('hi there,there is a class example!')
win =Tk()
win.title('标题')
win.geometry('600x500')
app =App(win)
win.mainloop()
Menu组件,画一个程序外壳
from tkinter import *
def file():
print("文件点击")
def exit():
print("编辑点击")
def about():
print("关于点击")
#创建一个窗口
root =Tk()
root.geometry("200x100")
# 创建一个菜单项,类似于导航栏,顶层菜单
menubar =Menu(root)
#菜单项(文件,编辑,关于)
filemenu =Menu(menubar)
for iter in ['新建','打开','保存','另存为','打印','设置']:
# 如果该菜单是顶层菜单的一个菜单项,则它添加的是下拉菜单的菜单项。则他添加的是下拉菜单的菜单项。
filemenu.add_command(label=iter,command=file)
exitmenu =Menu(menubar)
for iter in ['复制','粘贴','剪切','文本','删除']:
exitmenu.add_command(label=iter,command=exit)
aboutmenu =Menu(menubar)
for iter in ["版权信息","其它说明"]:
aboutmenu.add_command(label=iter,command=about)
# add_cascade 的一个很重要的属性就是 menu 属性,它指明了要把那个菜单级联到该菜单项上,
# 当然,还必不可少的就是 label 属性,用于指定该菜单项的名称
menubar.add_cascade(label='File',menu=filemenu)
menubar.add_cascade(label='exit',menu=exitmenu)
menubar.add_cascade(label='about',menu=aboutmenu)
# 最后可以用窗口的 menu 属性指定我们使用哪一个作为它的顶层菜单
root.config(menu=menubar)
mainloop()
显示如下图:
将Lable结合,当点击about的时候,在窗体上打印about的内容,而不是在终端输出,将about函数修改一下,frame绘制一个标签并显示器内容
def about():
w =Label(root,text="因为这是我第一个接触的GUI图形界面python库,")
w.pack(side=TOP)