python基础—图形开发(下)

简介: python基础—图形开发

grid布局管理器

grid布局管理器是Tkinter中的一种布局管理器,它将窗口分成网格,可以在每个网格中放置控件。相比pack布局管理器,grid布局管理器更加灵活,可以更精细地控制控件的位置和大小。


使用grid布局管理器,需要先创建一个父容器,然后使用组件的grid()方法将子组件放置在父容器中的某个单元格中。


例如,以下代码创建了一个包含3个标签的窗口,使用grid布局管理器将它们放置在不同的单元格中:

import tkinter as tk
root = tk.Tk()
label1 = tk.Label(root, text="Label 1")
label1.grid(row=0, column=0)
label2 = tk.Label(root, text="Label 2")
label2.grid(row=1, column=0)
label3 = tk.Label(root, text="Label 3")
label3.grid(row=0, column=1, rowspan=2)
root.mainloop()

运行结果:1.3.png

在这个例子中,label1和label2被放置在第1列的第1行和第2行,label3被放置在第2列的第1行和第2行。rowspan参数表示label3占据了两行的空间。


grid布局管理器还有其他参数,例如columnspan、sticky等,可以根据需要进行使用。


place布局管理器:

place布局管理器是Tkinter中的一种布局管理器,它可以让我们在窗口中精确地放置控件。使用place布局管理器,我们需要使用控件的x、y坐标来指定它的位置,以及width和height属性来指定控件的大小。


下面是一个简单的例子,演示如何使用place布局管理器来放置一个标签控件:

import tkinter as tk
root = tk.Tk()
# 创建一个标签控件
label = tk.Label(root, text="Hello World!")
# 使用place布局管理器来放置标签控件
label.place(x=50, y=50)
root.mainloop()

运行结果:

1.4.png

在这个例子中,我们创建了一个标签控件,并使用place布局管理器将其放置在窗口的坐标(50,50)处。

使用tkinter设计计算器程序

import tkinter as tk
class Calculator:
    def __init__(self, master):
        self.master = master
        master.title("Calculator")
        # 创建显示结果的文本框
        self.display = tk.Entry(master, width=30, justify='right')
        self.display.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
        # 创建数字按钮
        button_list = [
            '7', '8', '9', '/',
            '4', '5', '6', '*',
            '1', '2', '3', '-',
            '0', '.', '=', '+'
        ]
        r = 1
        c = 0
        for b in button_list:
            cmd = lambda x=b: self.click(x)
            tk.Button(master, text=b, width=5, command=cmd).grid(row=r, column=c)
            c += 1
            if c > 3:
                c = 0
                r += 1
    def click(self, key):
        if key == '=':
            result = eval(self.display.get())
            self.display.delete(0, tk.END)
            self.display.insert(tk.END, str(result))
        elif key == 'C':
            self.display.delete(0, tk.END)
        else:
            self.display.insert(tk.END, key)
root = tk.Tk()
calculator = Calculator(root)
root.mainloop()

运行结果:

1.5.png1.6.png

这个程序创建了一个简单的计算器应用程序,包含数字按钮、运算符按钮、清除按钮和等于按钮。当用户点击数字按钮时,数字将显示在文本框中。当用户点击运算符按钮时,运算符将添加到文本框中。当用户点击等于按钮时,程序将计算文本框中的表达式并显示结果。当用户点击清除按钮时,文本框将被清空。


Python事件处理

在Python中,事件处理是通过事件循环机制来实现的。事件循环是一个无限循环,它等待事件的发生,并且根据事件类型来执行相应的

操作。


在GUI编程中,事件循环是由GUI框架自动处理的,程序员只需要提供事件的处理函数即可。例如,在Tkinter中,可以通过绑定事件处理函数到控件上来处理相应的事件。


例如,下面的代码将一个函数绑定到按钮的点击事件上:

import tkinter as tk
def button_click():
    print("Button clicked")
root = tk.Tk()
button = tk.Button(root, text="Click me", command=button_click)
button.pack()
root.mainloop()

当按钮被点击时,button_click函数将被调用并打印出一条信息。


除了GUI事件之外,Python还支持其他类型的事件处理,例如文件读写事件、网络事件等。这些事件的处理方式与GUI事件类似,也是通过事件循环机制来实现的。


常用tkinter控件的使用

1. Label:用于显示文本或图像。

from tkinter import *
root = Tk()
label = Label(root, text="Hello World!")
label.pack()
root.mainloop()

1.7.png.

2. Button:用于创建按钮。

from tkinter import *
root = Tk()
entry = Entry(root)
entry.pack()
root.mainloop()

1.9.png

3. Entry:用于输入单行文本。

from tkinter import *
root = Tk()
entry = Entry(root)
entry.pack()
root.mainloop()

1.8.png

4. Text:用于输入多行文本。

from tkinter import *
root = Tk()
text = Text(root)
text.pack()
root.mainloop()

1.10.png

5. Checkbutton:用于创建复选框。

from tkinter import *
root = Tk()
var = IntVar()
checkbutton = Checkbutton(root, text="Check me", variable=var)
checkbutton.pack()
root.mainloop()

1.11.png

6. Radiobutton:用于创建单选按钮。

from tkinter import *
root = Tk()
var = IntVar()
radiobutton1 = Radiobutton(root, text="Option 1", variable=var, value=1)
radiobutton2 = Radiobutton(root, text="Option 2", variable=var, value=2)
radiobutton1.pack()
radiobutton2.pack()
root.mainloop()

1.12.png

7. Scale:用于创建滑动条。

from tkinter import *
root = Tk()
scale = Scale(root, from_=0, to=100, orient=HORIZONTAL)
scale.pack()
root.mainloop()

1.13.png

8. Listbox:用于创建列表框。

from tkinter import *
root = Tk()
listbox = Listbox(root)
listbox.insert(1, "Item 1")
listbox.insert(2, "Item 2")
listbox.insert(3, "Item 3")
listbox.pack()
root.mainloop()


1.14.png

9. Menu:用于创建菜单。

from tkinter import *
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New")
filemenu.add_command(label="Open")
filemenu.add_command(label="Save")
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
root.mainloop()

1.15.png

常用的label标签组件

Label:用于显示文本和图像。


Message:类似于Label,但可以自动换行


Entry:用于输入单行文本。


Text:用于输入多行文本。


Scale:用于选择一个范围内的值。


Checkbutton:用于选择一个或多个选项。


Radiobutton:用于选择一项。


Listbox:用于显示一个列表。


Combobox:类似于Entry,但可以选择一个下拉列表中的值。


LIstbox列表框组件

在Python中,可以使用Tkinter模块创建Listbox列表框组件。Listbox用于显示一列文本项,并允许用户从中选择一个或多个项。


以下是一个简单的例子:

import tkinter as tk
root = tk.Tk()
# 创建一个Listbox
listbox = tk.Listbox(root)
# 添加一些选项
listbox.insert(1, "选项1")
listbox.insert(2, "选项2")
listbox.insert(3, "选项3")
# 设置Listbox的位置和大小
listbox.pack(padx=10, pady=10)
root.mainloop()

在这个例子中,我们使用tk.Listbox()函数创建了一个Listbox组件,并使用insert()函数添加了一些选项。可以通过设置padxpady参数来调整Listbox的位置和大小。

如果想获取用户选择的选项,可以使用curselection()函数。例如:

# 获取用户选择的选项
selected = listbox.curselection()
# 打印选择的选项
for index in selected:
    print(listbox.get(index))

这将获取用户选择的选项的索引,并使用get()函数打印选项的文本值。

可以使用delete()函数删除选项。例如:

# 删除第二个选项
listbox.delete(2)

这将删除第二个选项(索引为2)。

还可以使用activate()函数设置默认选项。例如:

# 设置第一个选项为默认选项
listbox.activate(0)

这将设置第一个选项为默认选项,即在Listbox中显示为已选择。

相关文章
|
4月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
340 20
|
2月前
|
数据采集 存储 数据库
Python爬虫开发:Cookie池与定期清除的代码实现
Python爬虫开发:Cookie池与定期清除的代码实现
|
3月前
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
332 1
|
3月前
|
存储 算法 数据可视化
用Python开发猜数字游戏:从零开始的手把手教程
猜数字游戏是编程入门经典项目,涵盖变量、循环、条件判断等核心概念。玩家通过输入猜测电脑生成的随机数,程序给出提示直至猜中。项目从基础实现到功能扩展,逐步提升难度,适合各阶段Python学习者。
187 0
|
5月前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
209 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
3月前
|
数据采集 存储 监控
抖音直播间采集提取工具,直播间匿名截流获客软件,Python开发【仅供学习】
这是一套基于Python开发的抖音直播间数据采集与分析系统,包含观众信息获取、弹幕监控及数据存储等功能。代码采用requests、websockets和sqlite3等...
|
5月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的美容预约管理系统源码+运行
基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
92 9
|
5月前
|
JavaScript 前端开发 关系型数据库
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
134 3
|
5月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的新闻管理系统源码+运行
基于Python+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
137 5
|
5月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统源码+运行
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
97 2

推荐镜像

更多