python基础学习(十)

目录

GUI图形用户编程(四)

其他组件

OptionMenu选择项

Scale移动滑块

颜色选择框

文件对话框

文件对话框包含如下一些常用函数:

命名参数options的常见值如下:

简单输入对话框

通用消息框

ttk子模块控件

菜单


GUI图形用户编程(四)

其他组件

OptionMenu选择项

OptionMenu(选择项)用来做多选一,选中的项在顶部显示。显示效果如下:

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        python基础学习(十)_第1张图片

OptionMenu(选择项)的基本用法:

'''optionmenu的使用测试'''

from tkinter import *

root=Tk()
root.geometry("200x100")
v=StringVar(root)
v.set("北京")     #默认显示的地点
om=OptionMenu(root,v,"上海","深圳","广州","其他……")
om["width"]=10
om.pack()


def test01():
    print("所在城市是:",v.get())

Button(root,text="确定",command=test01).pack()
root.mainloop()

Scale移动滑块

Scale(移动滑块)用于指定的数值区间,通过滑块的移动来选择值。

使用Scale(移动滑块)控制字体大小变化:

效果图:

                        python基础学习(十)_第2张图片

代码演示:

'''Scale滑块的使用测试'''

from tkinter import *

root=Tk()
root.geometry("400x150")

def test01(value):
    print("滑块的值:",value)
    newFont=("宋体",value)
    a.config(font=newFont)

s1=Scale(root,from_=10,to=50,length=200,tickinterval=5,orient=HORIZONTAL,command=test01)
s1.pack()

a=Label(root,text="python",width=10,height=1,bg="grey",fg="white")
a.pack()

root.mainloop()

颜色选择框

颜色选择框可以帮助我们设置背景色、前景色、画笔颜色、字体颜色等等。

如图:

                                python基础学习(十)_第3张图片

颜色选择框基本用法:

文件对话框

文件对话框帮助我们实现可视化的操作目录、操作文件。最后,将文件、目录的信息传入到程序中。文件对话框包含如下一些常用函数:

文件对话框包含如下一些常用函数:

函数名 对话框 说明
askopenfilename(**options) 文件对话框 返回打开的文件名
askopenfilenames(**options) 返回打开的多个文件名列表
askopenfile(**options) 返回打开文件对象
askopenfiles(**options) 返回打开的文件对象的列表
askdirectory(**options) 目录对话框 返回目录名
asksaveasfile(**options) 保存对话框 返回保存的文件对象
asksaveasfilename(**options) 返回保存的文件名

命名参数options的常见值如下:

参数名 说明
defaulttextension 默认后缀:.xxx 用户没有输入则自动添加
filetypes=[(label1,pattern1),(label2,pattern2)] 文件显示过滤器
initaldir 初始目录
initalfile 初始文件
parent 父窗口,默认根窗口
title 窗口标题

文件对话框的基本用法:

'''简单对话框'''

from tkinter.simpledialog import *

root=Tk();root.geometry("400x100")

def test01():
    a=askinteger(title="输入年龄",prompt="请输入年龄",initialvalue=18,minvalue=1,maxvalue=150)
    show["text"]=a


Button(root,text="当前年龄?请输入",command=test01).pack()

show=Label(root,width=40,height=3,bg="grey")
show.pack()

root.mainloop()

简单输入对话框

Simpledialog(简单对话框)包含如下常用函数:

函数名 说明
askfloat(title,prompt,**kw) 输入并返回浮点值
askinteger(title,prompt,**kw) 输入并返回整数
askstring(title,prompt,**kw) 输入并返回字符串

参数中,title表示窗口标题;prompt是提示信息;命名参数kw为各种选项:initialvalue(初始值)、minvalue(最小值)、maxvalue(最大值)

简单对话框基本用法:

'''简单对话框'''

from tkinter.simpledialog import *

root=Tk();root.geometry("400x100")

def test01():
    a=askinteger(title="输入年龄",prompt="请输入年龄",initialvalue=18,minvalue=1,maxvalue=150)
    show["text"]=a


Button(root,text="当前年龄?请输入",command=test01).pack()

show=Label(root,width=40,height=3,bg="grey")
show.pack()

root.mainloop()

通用消息框

函数名 说明
askokcancel(title,message,**options) OK/Cancel 对话框
askquestion(title,message,**options) Yes/No 问题对话框
askretrycance(title,message,**options) Retry/Cancel 问题对话框
showerror(title,message,**options) 错误消息对话框
showinfo(title,message,**options) 消息框
showwarning(title,massage,**options) 警告消息框

通用消息框的基本用法:

'''通用消息框'''

from tkinter import *
from tkinter.messagebox import *

root=Tk();root.geometry("400x100")

a1=showinfo(title="python",message="Python基础学习")
print(a1)

root.mainloop()

ttk子模块控件

之前学习的组件时tkinter模块下的组件,整体风格较老套较丑。为了弥补这点不足,推出了ttk组件。ttk组件更加美观、功能更加强大。新增了LabeledScale(带标签的Scale)、Notebook(多文档窗口)、Progressbar(进度条)、Treeview(数)等组件。

使用ttk组件与使用普通的tkinter组件并没有多大的区别,只要导入ttk模块即可。

菜单

GUI程序通常都有菜单,方便用户的交互。一般将菜单分为两种:

1.主菜单

主菜单通常位于GUI程序上方。例如:

2.上下文菜单

快捷菜单(上下文菜单)是通过鼠标右键单击组件而弹出的菜单,一般是和这个组件相关的操作,比如:剪切、复制、粘贴、属性等。创建快捷菜单步骤如下:

(1)创建菜单

menubar=tk.Menu(root)
menubar.add_command(label="字体")

(2)绑定鼠标右键单击事件

def test(event):
	menubar.post(event.x_root,event.y_root)#在鼠标右键单击坐标出显示菜单
root.bind("",test)

为记事本程序增加上下文菜单:

如图:

               python基础学习(十)_第4张图片

代码演示:

'''开发记事本软件的菜单'''

from tkinter.filedialog import *

class Application(Frame):

    def __init__(self,master=None):

        super().__init__(master)        #super()代表的是父类的定义,而不是父类对象
        self.master=master
        self.textpad=None       #textpad表示Text文本框对象
        self.pack()
        self.createWidget()

    def createWidget(self):
        #创建主菜单
        menubar=Menu(root)

        #创建子菜单
        menuFile=Menu(menubar)
        menuEdit=Menu(menubar)
        menuHelp=Menu(menubar)

        #将子菜单加入到主菜单栏
        menubar.add_cascade(label="文件(F)",menu=menuFile)
        menubar.add_cascade(label="编辑(E)",menu=menuEdit)
        menubar.add_cascade(label="帮助(H)",menu=menuEdit)
        
        #添加菜单项

        menuFile.add_command(label="新建",accelerator="ctrl+n",command=self.test)
        menuFile.add_command(label="打开",accelerator="ctrl+o",command=self.test)
        menuFile.add_command(label="保存",accelerator="ctrl+s",command=self.test)
        menuFile.add_separator()        #添加分割线
        menuFile.add_command(label="退出",accelerator="ctrl+q",command=self.test)

        #将主菜单栏加到根窗口
        root["menu"]=menubar

        #文本编辑区
        self.textpad=Text(root,width=50,height=30)
        self.textpad.pack()

        #创建上下菜单

        self.contextMenu=Menu(root)
        self.contextMenu.add_command(label="背景颜色",command=self.test)

        #为右键绑定事件

        root.bind("",self.createContextMenu)

    def test(self):
        pass

    def createContextMenu(self,event):
        #菜单在鼠标右键单击的坐标处显示
        self.contextMenu.post(event.x_root,event.y_root)


if __name__=='__main__':
    root=Tk()
    root.geometry("450x300+200+300")
    root.title("简易记事本")
    app=Application(master=root)
    root.mainloop()

你可能感兴趣的:(python,开发语言,学习)