Python 图形用户界面


# GUI

# 1. Tkinter 初探
# Tkinter是事实上的Python标准GUI工具包
# 为保留tkinter的命名空间,同时减少输入量,可将重命名
import tkinter as tk
# 可调用函数mainloop()进入Tkinter主事件循环
# 要创建按钮,可实例化Button类,如果没有创建tk实例,创建控件时也将实例化tk
from tkinter import *
btn = Button()

# 要使按钮可见,需使用布局管理器(几何管理器)pack
btn.pack()

# 给控件赋值各种属性
btn['text'] = 'Click me'

# 也可以不分别给属性赋值,使用方法config同时设置多个属性
def clicked():
    print('I was clicked')
btn.config(text='Click me', command=clicked)

# 还可以使用控件的构造函数来配置控件
Button(text='Click me', command=clicked).pack()

# 2. 布局
# 对控件调用方法pack时,将把控件放在其父控件(主控件)中,
# 要指定主控件,可使用构造函数的第一个可选参数,
# 如果没有指定,将把顶级主窗口用作主控件

Label(text="I'm in the first window!").pack

# Toplevel 表示除主窗口外,另一个顶级窗口
second = Toplevel()
Label(second, text="I'm in the second window!").pack

# 没有提供任何参数时,pack从窗口顶部开始将控件堆叠成一列,并让它们在窗口中水平居中
# 例如,下面的代码将生成一个又高又窄的窗口,其中包含一列按钮
for i in range(10):
    Button(text=i).pack

# pack可选参数side,可设置控件停靠在哪一边(LEFT RIGHT TOP BOTTOM)
# pack可选参数fill,可设置控件在哪一个方向填满分配给它的控件(X,Y,BOTH)
# pack可选参数expand 可让控件随父控件一起增大(True)


# 其他布局管理器:grid place
# grid:可以将控件放在不可见的表格单元格中排列。为此需要指定参数row和column,
# 当控件横跨多行或多列时,还需要指定参数rowspan或columnspan

# place:可通过指定控件的x和y坐标以及高度宽度来排列

# 3. 事件处理bind
# 方法bind,要让控件对特定的事件进行处理,可对其调用方法bind

from tkinter import *
top = Tk()
def callback(event):
    print(event.x, event.y)

top.bind('', callback)
# 其中是使用鼠标左按钮(按钮1)单击的事件名称

# 4. 程序示例

from tkinter import *
from tkinter.scrolledtext import ScrolledText

def load():
    with open(filename.get()) as file:
        contents.delete('1.0', END)
        contents.insert(INSERT, file.read())

def save():
    with open(filename.get(), 'w') as file:
        file.write(contents.get('1.0', END))

top = Tk()
top.title('Simple Editor')

contents = ScrolledText()
contents.pack(side=BOTTOM, expand=True, fill=BOTH)

filename = Entry()
filename.pack(side=LEFT, expand=True, fill=X)

Button(text='Open', command=load).pack(side=LEFT)
Button(text='Save', command=save).pack(side=LEFT)

mainloop()

你可能感兴趣的:(Python 图形用户界面)