Python每日笔记11(python图形化编程Tkiner+常用类)

本次内容: python图形化编程+常用类
前方小高能

>> Python每日笔记—目录 <<

图形化界面:Tkiner

先给出一个简单的案例,点击运行后会出现一个空的窗口:

import tkinter
top = tkinter.Tk()  # 初始化一个窗体
# 进入消息循环
top.mainloop()

下面给出Tkiner中较为常用的一些组件和方法,更加详细的可以访问网址:https://www.runoob.com/python/python-gui-tkinter.html

'''Tkinter'''

组件:
Button:按钮控件;在程序中显示按钮。
Canvas:画布控件;显示图形元素如线条或文本
Checkbutton:多选框控件;用于在程序中提供多项选择框
Entry:输入控件;用于显示简单的文本内容
Frame:框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label:标签控件;可以显示文本和位图
Listbox:列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton:菜单按钮控件,用于显示菜单项。
Menu:菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message:消息控件;用来显示多行文本,与label比较类似
Radiobutton:单选按钮控件;显示一个单选的按钮状态
Scrollbar:滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text:文本控件;用于显示多行文本
Toplevel:容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox:输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow:PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
tkMessageBox:用于显示你应用程序的消息框。

共同属性:
Dimension   控件大小;
Color	    控件颜色;
Font	    控件字体;

几何方法:
pack()	包装;
grid()	网格;
place()	位置;

新建一个文件,编写一个新的案例:

  1. 创建一个窗口,
  2. 初始化两个列表,创建两个列表部件
  3. 将列表的内容循环加入列表部件中
  4. 将列表部件放在窗口中显示
from tkinter import *
# 创建一个窗口对象
root = Tk()
li = ['机电学院', '数学与统计学院', '体育学院', '音乐学院', '美术学院', '外国语学院', '计算机学院']
movie = ['计算机科学与技术', '软件工程']

# 创建两个列表组件,用来存储两个列表的信息内容
listb = Listbox(root)
listb2 = Listbox(root)

for item in li:
    listb.insert(0, item)   # 第一个小部件插入数据
for item in movie:
    listb2.insert(0, item)

# 将更新后的组件放置在主窗体中
listb.pack()    # 将小部件放置到主窗口中
listb2.pack()
root.mainloop()

button按钮组件

  1. Tkinter按钮组件用于在python中添加按钮,按钮可以放置文本或者图像
  2. 按钮可用于监听用户行为能够与一个python函数关联
  3. 当按钮被点击时,自动调用该函数

下面给出button按钮组件的常用属性及方法:

w = Button ( master, option=value, ... )
option:
    activebackground:当鼠标放上去时,按钮的背景色
    activeforeground:当鼠标放上去时,按钮的前景色	
    bd:按钮边框的大小,默认为 2 个像素	
    bg:按钮的背景色
    command:按钮关联的函数,当按钮被点击时,执行该函数
    fg:按钮的前景色(按钮文本的颜色)
    font:文本字体
    height:按钮的高度
    image:按钮上要显示的图片
    underline:下划线。
    width:按钮的宽度,如未设置此项,其大小以适应按钮
    text:按钮的文本内容
    
组件方法:
    deselect()	清除单选按钮的状态
    flash()	    在激活状态颜色和正常颜色之间闪烁几次单选按钮,但保持它开始时的状态。
    invoke()	可以调用此方法来获得与用户单击单选按钮以更改其状态时发生的操作相同的操作
    select()	设置单选按钮为选中。

下面给一个按钮案例:设定一个按钮,点击后弹出文字内容

import tkinter
import tkinter.messagebox   # 消息框模块,在python3.4中,模块名称tkMessageBox
# 创建一个窗体,top
top = tkinter.Tk()
# 创建一个函数
def hello():
    tkinter.messagebox.showinfo("py", "Hello,python")
# 创建一个按钮
button = tkinter.Button(top, text="点我", command=hello, bg='green', foreground='yellow',
                        activebackground='white', activeforeground='black')
button.pack()
top.mainloop()

效果图:
按钮案例

复选框Checkbutton

下面给出复选框Checkbutton组件中常用的属性和方法:

'''复选框Checkbutton
activebackground:当鼠标放上去时,按钮的背景色
activeforeground:当鼠标放上去时,按钮的前景色
bg:按钮的背景色	
bitmap:位图
bd:边框的大小,默认为 2 个像素
command:关联的函数,当按钮被点击时,执行该函数
font:文本字体
fg:选项的前景色
height:复选框文本行数,默认为 1。
image:是否使用图标
padx:按钮在x轴方向上的内边距(padding),是指按钮的内容与按钮边缘的距离,默认为 1 像素。
pady:按钮在y轴方向上的内边距(padding),默认为 1 像素。
selectcolor:选中后的颜色,默认为 selectcolor="red"。
selectimage:选中后的图片
state:状态,默认为 state=NORMAL
text:显示的文本,使用 "\n" 来对文本进行换行。
underline:下划线。
variable:变量,variable 的值为 10,代表着选中或不选中
width:默认宽度是复选框的文本或图像决定的,你可以设置指定字符数。
offvalue:Checkbutton 的值不仅仅是 10,可以是其他类型的数值,
		 可以通过 onvalue 和 offvalue 属性设置 Checkbutton 的状态值。
onvalue:Checkbutton 的值不仅仅是 10,可以是其他类型的数值,
		 可以通过 onvalue 和 offvalue 属性设置 Checkbutton 的状态值。

给出一个复选框的案例:出现两个可选的选项

from tkinter import *
top = Tk()
check_var1 = IntVar()
check_var2 = IntVar()

c1 = Checkbutton(top, text = '01', variable = check_var1, onvalue = 1, offvalue = 0,height = 5, width = 20)
c2 = Checkbutton(top, text = '02', variable = check_var2, onvalue = 1, offvalue = 0,height = 5, width = 20)

c1.pack()
c2.pack()
top.mainloop()

效果图:复选框案例

画布类组件

画布组件都是如下几种:
create_rectangle() # 空心矩形
create_arc() # 扇形
create_oval() # 圆形
create_polygon() # 多边形

常用的画布组件属性Option:
    bd:边框宽度,单位像素,默认为 2 像素。
    bg:背景色
    confine:如果为 true (默认), 画布不能滚动到可滑动的区域外。
    cursor:光标的形状设定,如arrow, circle, cross, plus 等
    height:高度
    highlightcolor:要高亮的颜色
    width:画布在 X 坐标轴上的大小。
  1. 下面给出一个案例:画出一些图形
from tkinter import *
root = Tk()
# 创建个Canvas,设置其背景色为白色
cv = Canvas(root, bg='green', bd = '4')
# ...(x0, y0, x1, y1, ..., xn, yn, options)
cv.create_rectangle(10, 10, 150, 150)   # 空心矩形
cv.create_arc(30, 30, 100, 100)     # 扇形
cv.create_oval(70, 80, 90, 100)   # 圆形
cv.create_polygon(100, 150, 200, 250, 150, 160) # 三边形
cv.create_polygon(200, 20, 200, 50, 300, 60, 300, 30) # 多边形

cv.pack()
root.mainloop()

效果图:画布组件

  1. 第二个案例:使用一些属性修饰图形
# 绘制椭圆
from tkinter import *
def main():
    root = Tk()
    w = Canvas(root, width = 200, height = 200, background = "white")

    #   绘制正方形,边框用虚线来表示
    w.create_rectangle(40, 40, 100, 100, dash = (4, 4))
    #   绘制粉红色椭圆
    w.create_oval(40, 40, 100, 70, fill = 'pink')
    w.pack()
    mainloop()
if __name__ == '__main__':
    main()

效果图:属性修饰画布类

登录案例Login

使用tkiner,画出登录界面内容,包括用户名和密码输入文本框,登录按钮,从文件中读取数据,进行检查。

# 登录界面案例
import tkinter as tk
from tkinter import messagebox
class Login(tk.Frame):
    def __init__(self):
        # 全局变量:用户名-密码 信息
        global user
        user = {}
        self.file()

        global root
        root = tk.Tk()
        # 设置窗口大小
        root.geometry("300x200")
        # 设置窗体的大小固定不可被修改,1为可以,0为不可以
        # 第一个参数宽度是否可以被修改,第二个参数高度是否可以被修改
        root.resizable(0, 0)
        super().__init__()
        # 用户名输入框
        self.username = tk.StringVar()
        self.password = tk.StringVar()
        self.pack()
        # 布局的方法
        self.main_login()
        # 显示
        root.mainloop()

    # 主体布局的方法
    def main_login(self):
        global root
        '''place是设置位置'''
        user_title_lable = tk.Label(root, text="登录窗口", font=('宋体', 13)).place(x=120, y=10)
        username_lable = tk.Label(root, text="用户名:", font=('宋体', 13)).place(x=20, y=50)
        '''textvariable是指这个控件的值绑定的变量'''
        username = tk.Entry(root, width=16, textvariable=self.username).place(x=90, y=50)
        password_lable = tk.Label(root, text="密码:", font=('宋体', 13)).place(x=20, y=90)
        password = tk.Entry(root, show="*", width=16, textvariable=self.password).place(x=90, y=90)
        '''command是点击按钮触发后的函数'''
        login_lable = tk.Button(root, text="登录", command=self.check_login, font=('宋体', 13)).place(x=80, y=130)
        cancel_table = tk.Button(root, text="取消", font=('宋体', 13)).place(x=160, y=130)

    # 验证函数
    def check_login(self):
        # 监控输入框
        print("user", self.username.get())
        print("password", self.password.get())

        # 判断字典中对应的value和输入的密码是否一致
        if user.get(self.username.get()) == self.password.get():
            messagebox.showinfo("通知", "登陆成功!")
        else:
            messagebox.showinfo("通知", "用户名或密码错误!")

    # 文件读取信息
    def file(self):
        global f
        try:
            f = open("user.data", 'r', encoding="utf-8")
        except:
            f = open("user.data", 'w', encoding="utf-8")
        else:
            # 读取文件
            data = f.read()
            # eval()函数,用来执行一个字符串表达式,并返回表达式的值
            new_dict = eval(data)

            '''查看一下eval函数的返回字符串
                这里自动加上了(),就是tuple元组类型
                所以下面需要用tuple转换
            '''
            print(new_dict)     # ({'张三': '123'}, {'李四': '456'})
            '''第一种写法:
                类型转换,加入字典中
                user.data内容:
                {'张三','123'},{'李四','456'}
            '''
            # for i in tuple(new_dict):
            #   user.update(i)

            '''第二种写法:
                使用推导式+items方法进行赋值
                user.data内容:
                {'张三':'123','李四':'456'}
            '''
            # 全局变量
            global user
            user = {key: value for key, value in dict(new_dict).items()}
        finally:
            f.close()
if __name__ == '__main__':
    Login()
user.data:
{'张三':'123', '李四':'456'}

通过上述的实用案例,可以体会到tkiner的好处,相对于控制台的文字输出非常方便,且可视化

明天继续更新GUI的内容,敬请期待

如果这篇文章对你有用的话,点个赞呗~

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Abstract Describes the Tkinter widget set for constructing graphical user interfaces (GUIs) in the Python programming language. This publication is available in Web form1 and also as a PDF document2. Please forward any comments to [email protected]. Table of Contents 1. What is Tkinter?.......................................................................................................................3 2. A minimal application..............................................................................................................3 3. Definitions..............................................................................................................................4 4. Layout management.................................................................................................................5 4.1. The .grid() method....................................................................................................5 4.2. Other grid management methods...................................................................................6 4.3. Configuring column and row sizes.................................................................................7 4.4. Making the root window resizeable................................................................................8 5. Standard attributes...................................................................................................................8 5.1. Dimensions...................................................................................................................9 5.2. The coordinate system...................................................................................................9 5.3. Colors...........................................................................................................................9 5.4. Type fonts...................................................................................................................10 5.5. Anchors......................................................................................................................11 5.6. Relief styles.................................................................................................................12 5.7. Bitmaps.......................................................................................................................12 5.8. Cursors.......................................................................................................................12 5.9. Images........................................................................................................................14 5.10. Geometry strings........................................................................................................14 5.11. Window names...........................................................................................................15 5.12. Cap and join styles.....................................................................................................15 5.13. Dash patterns.............................................................................................................16 5.14. Matching stipple patterns............................................................................................16 6. The Button widget................................................................................................................17 7. The Canvas widget................................................................................................................19 7.1. Canvas coordinates......................................................................................................20 7.2. The Canvas display list................................................................................................20 7.3. Canvas object IDs........................................................................................................21 7.4. Canvas tags................................................................................................................21 1http://www.nmt.edu/tcc/help/pubs/tkinter/ 2http://www.nmt.edu/tcc/help/pubs/tkinter/tkinter.pdf 1 Tkinter reference New Mexico Tech Computer Center 7.5. CanvastagOrId arguments......................................................................................21 7.6. Methods on Canvas widgets........................................................................................21 7.7. Canvas arc objects.......................................................................................................26 7.8. Canvas bitmap objects.................................................................................................28 7.9. Canvas image objects..................................................................................................29 7.10. Canvas line objects.....................................................................................................29 7.11. Canvas oval objects....................................................................................................31 7.12. Canvas polygon objects..............................................................................................32 7.13. Canvas rectangle objects.............................................................................................34 7.14. Canvas text objects.....................................................................................................35 7.15. Canvas window objects..............................................................................................36 8. The Checkbutton widget......................................................................................................37 9. The Entry widget..................................................................................................................40 9.1. Scrolling an Entry widget............................................................................................43 10. The Frame widget................................................................................................................43 11. The Label widget................................................................................................................44 12. The LabelFrame widget......................................................................................................46 13. The Listbox widget............................................................................................................48 13.1. Scrolling a Listbox widget........................................................................................52 14. The Menu widget..................................................................................................................52 14.1. Menu item creation (coption) options.........................................................................55 14.2. Top-level menus.........................................................................................................56 15. The Menubutton widget......................................................................................................57 16. The Message widget............................................................................................................59 17. The OptionMenu widget.......................................................................................................60 18. The PanedWindow widget....................................................................................................61 18.1. PanedWindow child configuration options...................................................................63 19. The Radiobutton widget....................................................................................................64 20. The Scale widget................................................................................................................67 21. The Scrollbar widget........................................................................................................70 21.1. The Scrollbarcommand callback............................................................................72 21.2. Connecting a Scrollbar to another widget................................................................73 22. The Spinbox widget............................................................................................................73 23. The Text widget..................................................................................................................78 23.1. Text widget indices...................................................................................................80 23.2. Text widget marks....................................................................................................81 23.3. Text widget images...................................................................................................82 23.4. Text widget windows...............................................................................................82 23.5. Text widget tags.......................................................................................................82 23.6. Setting tabs in a Text widget......................................................................................83 23.7. The Text widget undo/redo stack..............................................................................83 23.8. Methods on Text widgets..........................................................................................84 24. Toplevel: Top-level window methods..................................................................................91 25. Universal widget methods.....................................................................................................93 26. Standardizing appearance...................................................................................................101 26.1. How to name a widget class......................................................................................102 26.2. How to name a widget instance.................................................................................102 26.3. Resource specification lines.......................................................................................102 26.4. Rules for resource matching......................................................................................103 27. Connecting your application logic to the widgets...................................................................104 28. Control variables: the values behind the widgets...................................................................104 29. Focus: routing keyboard input.............................................................................................106 New Mexico Tech Computer Center Tkinter reference 2 30. Events................................................................................................................................107 30.1. Levels of binding......................................................................................................108 30.2. Event sequences.......................................................................................................109 30.3. Event types..............................................................................................................109 30.4. Event modifiers........................................................................................................110 30.5. Key names...............................................................................................................111 30.6. Writing your handler: The Event class......................................................................113 30.7. The extra arguments trick..........................................................................................115 30.8. Virtual events...........................................................................................................116 31. Pop-up dialogs....................................................................................................................116 31.1. The tkMessageBox dialogs module..........................................................................116 31.2. The tkFileDialog module.....................................................................................118 31.3. The tkColorChooser module.................................................................................119
这是一个VB6的IDE插件(Addin),使用VB6的IDE直接设计Python的界面。 Python和VB都是能让人快乐的编程语言,我使用了Python之后,很多自己使用的工具都使用Python开发或改写了,因为最终实现的Python代码实在太短了(相比VB),有时候Python一行代码就可以实现VB一个函数的功能。 Python就是这种让人越用越开心的语言。 不过说实在,使用Python开发GUI界面还是麻烦了一些了,自带的标准库Tkinter使用起来非常简单,不过对于习惯了VB拖放控件完成界面设计的同学来说,还是不够人性化。TK也有一个工具叫GUI Builder,不过它使用Layout布局,不够直观,而且界面简陋,用起来也不爽。 至于PyQt/wxPythonGUI库,尽管有可视化设计工具,但总感觉做一般的轻量级应用是杀鸡用牛刀,学习起来也比较复杂,而且不够环保,不够低碳,要带一个很大的库,需要目标机器上夜同样安装了PyQt/wxPython,做不了绿色软件。 所以最终的结果是我更喜欢Tkinter,用起来很简单,绿色环保,真正的跨平台,一个py文件到处运行(担心泄密就编译成pyc)。 很多人都认为TK的界面不够美观,不过导入Python自带的标准TTK主题库,界面非常Native,不输PyQt/wxPython。 此Addin默认启用TTK支持,也可选择关闭。 总而言之,轻量级GUI,TK+TTK足够。 使用此Addin,你可以不用写一句代码就可以生成一个完整可运行的PythonGUI界面,支持python 2.X和3.X。 安装方法:将压缩包解压到你希望的目录,然后执行Setup.exe完成注册插件过程,打开VB6就可以用了。 在VB窗体上设计完成界面后(你可以大胆的设置各控件的属性,Addin尽量将其翻译为tkinter的控件属性),点工具栏上的VisualTkinter(图标为一片橙红色羽毛),再点'生成代码'按钮,即可生成可运行的Python代码,可以拷贝至剪贴板或保存至文件。 一般情况下你可以不用再改变tkinter的控件属性,但是如果你熟悉tkinter,需要更多的控制,可以一一核对各属性,并且修改,再生成代码。 除了用来设计界面外,此ADDIN内置的各控件属性列表可以做为编程参考,比较完整,除了极少数我认为大多数人都不用的属性外,属性定义基本上是我从官方的tkinter文档直接翻译的。 如果还没有VB6,网上找一个VB6精简版即可(建议使用12M的版本,6M的版本也可以使用,不过工具栏图标无法显示,可以通过菜单执行此插件)。 经过网友测试,完美支持WinXP,Windows 7, Windows 8。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值