赞
踩
import tkinter
# 定义窗口对象
window = tkinter.Tk()
# 设置窗口属性
window.title('我的第一个 GUI 程序') # 标题
window.geometry('300x100+300+200') # 位置及大小
# 格式:'wxh +-x +-y',其中
# wxh:表示 宽x高(字母 xyz 的 x)
# +x:表示距屏幕左边的距离;-x 表示距屏幕右边的距离
# +y: 表示距屏幕上边的距离;-y 表示距屏幕下边的距离
# 主循环:窗口一直存在(除非被关闭)
window.mainloop()
菜单结构:
from tkinter import * class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" self.label01 = Label(self, text="标签1", width=10, height=2, bg="black", fg="white") self.label01.pack() self.label02 = Label(self, text="标签2", width=10, height=2, bg="blue", fg="white", font=("黑体", 20)) self.label02.pack() # 显示文本 self.label03 = Label(self, text="段落1\n段落段落2\n段落段落段落3", borderwidth=1, relief="solid", justify="right") self.label03.pack() # 显示图片 global photo photo = PhotoImage(file="images/1.gif") # 暂支持的图片格式:png、gif self.label04 = Label(self, image=photo) self.label04.pack() if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x300+200+300") app = Application(master=window) window.mainloop()
效果预览:
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" # 常规按钮 self.btn01 = Button(self, text="登录", command=self.login) self.btn01.pack() self.btn02 = Button(self, text="登录2", command=self.login) self.btn02.config(state="disabled") # 禁止登录 self.btn02.pack() # 图片按钮 global photo photo = PhotoImage(file="images/1.gif") self.btn03 = Button(self, image=photo, command=self.login) self.btn03.pack() def login(self): messagebox.showinfo("提示", "登录成功!") if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
效果预览:
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" self.label01 = Label(self, text="用户名") self.label01.pack() user_name = StringVar() self.entry01 = Entry(self, textvariable=user_name) self.entry01.pack() self.label02 = Label(self, text="密码") self.label02.pack() password = StringVar() self.entry02 = Entry(self, textvariable=password, show="*") self.entry02.pack() Button(self, text="登录", command=self.login).pack() def login(self): user_name = self.entry01.get() password = self.entry02.get() if user_name == 'admin' and password == '123456': messagebox.showinfo("提示", "登录成功!") else: messagebox.showinfo("提示", "登录失败,请检查用户名或密码!") if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
效果预览:
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" self.text01 = Text(self, width=40, height=10, bg="gray") self.text01.pack() # 插入文本,格式:横坐标.纵坐标 self.text01.insert(1.0, 'aaaaaaaaaaaaaaaa\nbbbbbbbbbbbbb') self.text01.insert(2.3, 'cccccccccccccccc\neeeeeeeeeeeee') Button(self, text="重复插入文本", command=self.insert_text).pack(side="left") def insert_text(self): self.text01.insert(INSERT, '鼠标光标处插入') self.text01.insert(END, '文本最后处插入') if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
效果预览:
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" self.default = StringVar() self.default.set("F") rb1 = Radiobutton(self, text="男性", value="M", variable=self.default) rb2 = Radiobutton(self, text="女性", value="F", variable=self.default) rb1.pack(side="left") rb2.pack(side="left") Button(self, text="确定", command=self.confirm).pack() def confirm(self): messagebox.showinfo("提示", "选择的性别的是:" + self.default.get()) if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" self.code = IntVar() self.video = IntVar() print(self.code.get()) # 整数默认值是 0 # onvalue=1, offvalue=0 表示:选中=1,未选中=0 cb1 = Checkbutton(self, text="敲代码", variable=self.code, onvalue=1, offvalue=0) cb2 = Checkbutton(self, text="看视频", variable=self.video, onvalue=1, offvalue=0) cb1.pack(side="left") cb2.pack(side="left") Button(self, text="确定", command=self.confirm).pack() def confirm(self): if self.code.get() == 1: messagebox.showinfo("提示", f"已选中【敲代码】") if self.video.get() == 1: messagebox.showinfo("提示", f"已选中【看视频】") if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
效果预览:
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" canvas = Canvas(self, width=300, height=200) canvas.pack() # 画一条直线。以 横坐标,纵坐标 两个为一组 canvas.create_line(10, 10, 30, 20, 40, 50) # 画一个矩形。 canvas.create_rectangle(50, 50, 100, 100) # 画一个椭圆 canvas.create_oval(50, 50, 100, 100) if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
预览效果:
from tkinter import * class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" menubar = Menu(self.master) # 创建一级菜单 file_menu = Menu(menubar, tearoff=0) file_menu.add_command(label='打开') file_menu.add_command(label='新建') menubar.add_cascade(label="文件", menu=file_menu) # 创建二级菜单(三级菜单同理) edit_menu = Menu(file_menu, tearoff=0) edit_menu.add_command(label="修改") edit_menu.add_command(label="保存") file_menu.add_cascade(label="编辑", menu=edit_menu) # 将菜单加至主窗体中 self.master.config(menu=menubar) if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x300+200+300") app = Application(master=window) window.mainloop()
效果预览:
布局管理器 | 布局方式 |
---|---|
pack | 水平、竖直 |
grid | 表格 |
place | 位置 |
选项 | 说明 | 取值范围 |
---|---|---|
side | 停靠方向 | top (上)、botton (下)、left (左)、right (右) |
fill | 填充方式 | x (水平)、y (垂直)、both (水平+垂直)、none (不填充) |
expand | 扩大方式 | True (随主窗体的大小变化)、False (不随主窗体变化) |
anchor | 方向 | N (北)、S (南)、W (西)、E (东)、Center (中心) 等 |
ipandx、ipandy | 内边距 | 非负整数 |
padx、pady | 外边距 | 非负整数 |
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" Button(self, text='A').pack(side=LEFT, expand=YES, fill=Y) Button(self, text='B').pack(side=TOP, expand=YES, fill=BOTH) Button(self, text='C').pack(side=RIGHT, expand=YES, fill=NONE) Button(self, text='D').pack(side=LEFT, expand=NO, fill=Y) Button(self, text='E').pack(side=TOP, expand=YES, fill=BOTH) Button(self, text='F').pack(side=BOTTOM, expand=YES) Button(self, text='G').pack(anchor=SE) if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
效果预览:
选项 | 说明 | 取值范围 |
---|---|---|
row | 单元格的行数 | 从 0 开始的正整数 |
rowspan | 跨行,跨越的行数 | 正整数 |
column | 单元格的列号 | 从 0 开始的正整数 |
columnspan | 跨列,跨越的列数 | 正整数 |
ipandx,ipandy | 子组件之间的间隔,按x、y 方向 | 非负浮点数,默认 0.0 |
pandx,pandy | 并列组件之间的间隔,按x、y 方向 | 非负浮点数,默认 0.0 |
sticky | 组件紧贴所在单元格的某一个角,如:东西南北等 | n、s、w、e、nw、sw、se、ne、center(默认) |
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" self.label01 = Label(self, text="用户名") self.label01.grid(row=0, column=0) self.entry01 = Entry(self) self.entry01.grid(row=0, column=1) Label(self, text="密码").grid(row=1, column=0) Entry(self, show="*").grid(row=1, column=1) if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
效果预览:
选项 | 说明 | 取值范围 |
---|---|---|
x,y | 组件左上角的绝对坐标(相对于窗口) | 非负整数 |
relx,rely | 组件左上角的相对坐标(相对于父容器) | 0=最左边,0.5=正中间,1=最右边 |
width,height | 组件的宽度和高度(相对于窗口) | |
relwidth,relheight | 组件的宽度和高度(相对于父容器) | |
anchor | 对齐方式 | n、s、w、e、nw、ne、sw、se、center(默认) |
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self, master=None): super().__init__(master) # 父类的定义 self.master = master self.pack() self.create_widget() def create_widget(self): """创建组件""" Button(self.master, text='A').place(x=0, y=0) Button(self.master, text='B').place(x=100, y=100, width=100, height=50) if __name__ == '__main__': window = Tk() window.title("一个经典的GUI程序类的测试") window.geometry("400x200+200+300") app = Application(master=window) window.mainloop()
效果预览:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。