python高级语法-GUI编程(主要介绍tkinter)

本文介绍了 Python 中的 GUI 开发,重点讲解了 Tkinter 库的使用方法,并通过实例演示了如何创建窗口、布局组件及响应事件等基本操作。
  • 首先,这里必须强调,尽管python的创始人提到过python没有主打领域,后来者可以无限丰富它,但是时至今日, python语言已经找到了自己的路,但这些路里面绝对没有GUI开发。所以这里只做粗浅的介绍,而且Tkinter也不是python中常用的GUI,因为确实不好看。
    • Tkinter:绑定TK GUI工具集,用python包装的tcl代码, 轻量级,但是很丑
    • PyGTK:Tkinter的代替品
    • wxPython:跨平台GUI
    • PyQT:跨平台,商业授权有问题,个人开发可能有版权问题,但好用

 

  • Tkinter几类组件:

布局方式:

                       pack:方位布局

                       place:坐标布局

                       gird:网格布局

相关设置请看源码,常用的都会测试到。

  按钮:

                       Button

                       RadioButton

                       CheckButton

                       Listbox

  文本输入组件:

                       Entry:单行

                       Text:多行

  标签:

                       label:显示图片和文字

                       Message:根据内容文字换行

  菜单:

                       Menu

                       MenuButton

  滚动条:

                       scale:滑块组件

                       Scrollbar滚动条组件

  其他组件:

                       Canvas:画布组件

                       Frame:框架组件,将多个组件分组

                       Toplevel:创建子窗口容器组件

  • 启动消息循环在所有组件设置的最后

 

  • test1
import tkinter
# 类似java Frame的顶层容器
base = tkinter.Tk()
base.wm_title("test")
# label测试
lb1 = tkinter.Label(base, text="这是label1")
# 布局设置,pack是一种自适应布局
lb1.pack()
lb2 = tkinter.Label(base, text="这是label2")
lb2.pack()

# entry测试
et1 = tkinter.Entry(base)
et1.pack()
et2 = tkinter.Entry(base)
et2.pack()
et2["show"] = "*"
# button测试
def cmd1():
    base.wm_title("你按下了按钮,我得到你的输入为{}".format(et1.get()))


btn = tkinter.Button(base, text="我是按钮,戳我", command=cmd1)
btn.pack()

# 消息循环,放在组件设置的最后
base.mainloop()

 

  • test2
import tkinter
# 级联菜单测试
baseFrame = tkinter.Tk()
menubar = tkinter.Menu(baseFrame)
baseFrame["menu"] = menubar
menubar2 = tkinter.Menu(menubar)
l = ["选项1-1", "选项1-2", "选项1-3"]
for i in l:
    menubar2.add_command(label=i)
menubar.add_cascade(label="选项1", menu=menubar2)
menubar.add_command(label="选项2")
baseFrame.mainloop()

  • test3
import tkinter
def makeLabel():
    global baseFrame
    tkinter.Label(baseFrame, text="点了你点了").pack()
# 弹出菜单
baseFrame = tkinter.Tk()
menubar = tkinter.Menu(baseFrame)
for i in ["选项1", "选项2", "选项3"]:
    menubar.add_separator()
    menubar.add_command(label=i)
menubar.add_command(label="你牛逼你点我啊", command=makeLabel)
def pop(event):
    # 监听位置
    menubar.post(event.x_root, event.y_root)
baseFrame.bind("<Button-3>", pop)
baseFrame.mainloop()

  • test4
import tkinter
baseFrame = tkinter.Tk()
cvs = tkinter.Canvas(baseFrame, width =300, height = 200)
cvs.pack()
cvs.create_line(1,1,100,200)
baseFrame.mainloop()

  •  其他更多设置可在pycharm下按住ctrl选中名称获得源码查看属性。
  • 由以上测试可知GUI组件使用套路一致:
    •    创建窗口,顶级容器
    •    创建各个类型组件,指明父亲位置,触发事件,设置布局
    •    为主窗口设置消息循环

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周先森爱吃素

你的鼓励是我坚持创作的不懈动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值