本文主要介绍了GUI组件的其他常用组件部分:optionmenu选项菜单,scale滑块;颜色框、文件选择框,读取文件内容;简单对话框、通用消息、ttk子模块问题;
一系列GUI编程,有相关的专栏,欢迎瞅一瞅哈!!!
有点兴趣,想坚持下去,所以写了笔记,感觉坚持下来总是有收获的,勿喷!!
目录
[20. optionmenu选项菜单_scale滑块](#20. optionmenu选项菜单_scale滑块)
[1. 多选菜单optionmenu](#1. 多选菜单optionmenu)
[2. Scanle移动模块](#2. Scanle移动模块)
[21. 颜色框 _文件选择框 _读取文件内容](#21. 颜色框 _文件选择框 _读取文件内容)
[1. 颜色选择器](#1. 颜色选择器)
[22. 简单对话框 通用消息框 ttk子模块问题](#22. 简单对话框 通用消息框 ttk子模块问题)
[推荐专业 复杂版:wxPython PyQT](#推荐专业 复杂版:wxPython PyQT)
其他组件
20. optionmenu选项菜单_scale滑块
1. 多选菜单optionmenu
用来做多选一,在顶部显示
python
from tkinter import *
root = Tk()
root.geometry('200x100')
v = StringVar(root)
v.set('梦茹')
om = OptionMenu(root,v,'聪聪','潘潘','小慧','小嘉林')
om['width'] = 10
om.pack()
def test1():
print('最棒室友:',v.get())
Button(root,text='确定',command=test1).pack()
root.mainloop()
2. Scanle移动模块
Scale 移动滑块
Scale(移动滑块)用于在指定的数值区间,通过滑块的移动来选择值。
python
from tkinter import *
root = Tk()
root.geometry('400x200')
def test1(value):
print('滑块的值:', value)
newFront = ('宋体', value)
a.config(font=newFront)
#from...to...:长度,长度为200;tickinterval:间隔为5;orient:水平(默认为垂直)
s1 = Scale(root, from_=10, to=50, length=200, tickinterval=5, orient=HORIZONTAL, command=test1)
s1.pack()
a = Label(root, text='最爱臭豆', width=10, height=1, bg='black', fg='white')
a.pack()
root.mainloop()
21. 颜色框 _文件选择框 _读取文件内容
1. 颜色选择器
颜色选择框可以帮助我们设置背景色、前景色、画笔颜色、字体颜色等。
python
# P21
from tkinter import *
from tkinter.colorchooser import askcolor
root = Tk()
root.geometry('400x150')
def test1():
s1 = askcolor(color='red',title='选择背景色')
print(s1)
# s1的值是:((0.0,0.0,255.99609375),'#0000ff')
root.config(bg=s1[1])
Button(root,text='选择背景色',command=test1).pack()
root.mainloop()
2.文件对话框
简介:
文件对话框帮助我们实现可视化的操作目录、操作文件。最后,将文件、目录的信息传入到程序中。文件对话框包含如下一些常用函数:
练习一
python
from tkinter import *
from tkinter.filedialog import askopenfilename
root = Tk()
root.geometry('400x150')
def test1():
f = askopenfilename(title='上传文件',initialfile='d:',filetypes=[('Python文件','.md')])
show['text'] = f
Button(root,text='选择编辑的视频文件',command=test1).pack()
show = Label(root,width=40,height=3,bg='green')
show.pack()
root.mainloop()
练习二
python
from tkinter import *
from tkinter.filedialog import askopenfilename
root = Tk()
root.geometry('400x150')
def test1():
filename = askopenfilename(title='上传文件', initialdir='D:/', filetypes=[('文本文件', '*.txt')])
if filename:
with open(filename, 'r', encoding='utf-8') as f:
show['text'] = f.read()
Button(root, text='选择读取的文本文件', command=test1).pack()
show = Label(root, width=40, height=3, bg='green', fg='white', wraplength=400) # 添加 fg 和 wraplength 以改善显示
show.pack()
root.mainloop()
22. 简单对话框 通用消息框 ttk子模块问题
简单对话框:
实现效果图
代码表示
python
from tkinter import *
from tkinter.simpledialog import askinteger
root = Tk()
root.geometry('400x100')
def test1():
a = askinteger(title='输入年龄',prompt='请输入年龄',initialvalue=18,minvalue=1,maxvalue=150)
# askstring,askfloat框使用方式一样
show['text'] = a
Button(root,text='你多大了?请输入',command=test1).pack()
show = Label(root,width=40,height=3,bg='green')
show.pack()
root.mainloop()
通用消息框:
常用函数
通过
tkinter.messagebox
模块来使用。
showinfo(title, message)
: 显示一个信息框。
showwarning(title, message)
: 显示一个警告框。
showerror(title, message)
: 显示一个错误框。
askquestion(title, message)
: 显示一个询问框,用户可以选择"是"或"否"。
askokcancel(title, message)
: 显示一个确认框,用户可以选择"确定"或"取消"。
askretrycancel(title, message)
: 显示一个重试/取消框,用户可以选择"重试"或"取消"。
askyesno(title, message)
: 显示一个是/否框,用户可以选择"是"或"否"。
代码表示
python
from tkinter import *
from tkinter.messagebox import showinfo
root = Tk()
root.geometry('400x100')
a1 = showinfo(title='zmr',message='python')
print(a1)
root.mainloop()
返回值为ok
ttk子模块控件:(没有细讲)
推荐专业 复杂版:wxPython PyQT
我们再前面学的组件是tkinter模块下的组件,整体风格较老较丑。为了弥补这点不足,推出了tk组件。
ttk组件更加美观、功能更加强大。新增了Labeledscale(带标签的Scale)、Notebook(多文档窗口)、Progressbar(进度条)Treeview(数)等组件
使用 ttk组件与使用普通的Tkinter 组件并没有多大的区别,只要导入ttk模块即可
ttk子模块的官方文档:
https://docs.python.org/3.7/library/tkinter.ttk.html