基于Python的标准库tkinter创建面向对象的GUI应用程序

1.GUI程序的框架Frame

import tkinter as tk  #导入tkinter模块
class Application(tk.Frame):  #定义Application类,派生于Frame类
    def __init__(self,master=None):   #构造函数
        tk.Frame.__init__(self,master)
        self.pack()
        self.createWidgets()  #声明对象方法,创建子组件
    def createWidgets(self):
        self.btnSayHi=tk.Button(self)  #创建Button按钮组件
        self.btnSayHi["text"]="Hello"
        self.btnSayHi["command"]=self.sayHi   #设置命令属性,绑定事件处理函数
        self.btnSayHi.pack() #调用pack()方法调整位置和大小
        self.btnQuit=tk.Button(self,text="Quit",command=root.destroy) #创建Quit按钮
        self.btnQuit.pack()

    def sayHi(self):
        tk.messagebox.showinfo("Message","Hello World!") #弹出消息窗口

root=tk.Tk()  #创建一个tk根窗口组件root
app=Application(master=root)  #声明Application对象实例
app.mainloop()  #调用组件mainloop()方法,进入事件循环

运行效果:



2.pack几何布局管理器

from tkinter import*  #导入tkinter模块的所有内容
root=Tk();root.title("登录")  #窗口标题
f1=Frame(root);f1.pack()  #界面分为三个Frame
f2=Frame(root);f2.pack()
f3=Frame(root);f3.pack()
Label(f1,text="用户名").pack(side=LEFT)  #标签放置在f1中,左停靠
Entry(f1).pack(side=LEFT)  #单行文本框放置在f1中,左停靠
Label(f2,text="密  码").pack(side=LEFT)  #标签放置在f2中,左停靠
Entry(f2,show="*").pack(side=LEFT)  #单行文本框放置在f2中,左停靠
Button(f3,text="取消").pack(side=RIGHT)  #取消按钮放置在f3中,右停靠
Button(f3,text="登录").pack(side=RIGHT)  #登录按钮放置在f3中,右停靠
root.mainloop()

运行效果:



3.grid几何布局管理器

from tkinter import *
root =Tk()
Button(root,text="1").grid(row=0,column=0) #按钮1放置于0行0列
Button(root,text="2").grid(row=0,column=1) #按钮1放置于0行1列
Button(root,text="3").grid(row=0,column=2) #按钮1放置于0行2列
Button(root,text="4").grid(row=1,column=0)
Button(root,text="5").grid(row=1,column=1)
Button(root,text="6").grid(row=1,column=2)
Button(root,text="7").grid(row=2,column=0)
Button(root,text="8").grid(row=2,column=1)
Button(root,text="9").grid(row=2,column=2)
Button(root,text="0").grid(row=3,column=0,columnspan=2,sticky=E+W) #跨两列,左右紧贴
Button(root,text=".").grid(row=3,column=2,sticky=E+W) #左右紧贴
root.mainloop() #事件循环


4.place几何布局管理器

from tkinter import *
root=Tk();root.title("登录")
root['width']=200;root['height']=80  #窗口宽度高度
Label(root,text="用户名",width=6).place(x=1,y=1) #绝对坐标(1,1)
Entry(root,width=20).place(x=45,y=1)
Label(root,text="密  码",width=6).place(x=1,y=20)
Entry(root,width=20,show='*').place(x=45,y=20)
Button(root,text="登录",width=8).place(x=40,y=40)
Button(root,text="取消",width=8).place(x=110,y=40)
root.mainloop()

运行效果:


用此方法时,需要提前设计好窗口的大小,以及各组件的位置大小。


  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值