不负责任的python教程(一)

本文主要讲解tkinter库的使用,本文使用的环境为python3.7,与python2.x的语法有区别,请注意区分。 tkinter是python内置的标准GUI库,也是最为常用和简单的一个GUI设计库。

请注意,本文编写于 224 天前,最后修改于 175 天前,其中某些信息可能已经过时。

0 .前言

最近要忙毕设了,毕设要用到到python,所以不如借着这个机会写写自己在用python的一些功能吧,本文虽然顶着教程的名字,但其实更多的像是我自己的技术备忘吧,但愿毕业答辩的时候还能看懂自己写的代码。本文极度不负责任,不可能介绍所有的用法,只有我用到的功能有所介绍,其他的为象征性提及,所以,你懂的~自己学去。

1 .GUI设计

python常见的几个可以用于GUI设计的库函数
curses : 用于创建终端GUI应用程序的ncurses的内置包装器.
enaml : 使用声明式语法(如QML)创建漂亮的用户界面.
Flexx : Flexx是一个纯Python工具包,用于创建GUI,它使用Web技术进行渲染.
kivy : 用于创建在Windows,Linux,Mac OS ,Android和iOS上运行的NUI应用程序的库.
pyglet : 一个用于Python的跨平台窗口和多媒体库.
PyGObject : 用于GLib / GObject / GIO / GTK +(GTK + 3)的Python绑定
PyQt : 用于Qt跨平台应用程序和UI框架的Python绑定,支持Qt v4和Qt v5框架.
PySide : 用于Qt跨平台应用程序和UI框架的Python绑定,支持Qt v4框架.
pywebview : 围绕Webview组件的轻量级跨平台本机包装,允许在自己的本机专用窗口中显示HTML内容
Tkinter : Tkinter是Python的事实上的标准GUI包.
Toga : 一个Python本机的OS本机GUI工具包.
urwid : 用于创建终端GUI应用程序的库,具有对窗口小部件、事件、丰富颜色等的强大支持.
wxPython : wxWidgets C ++类库与Python的混合.

1.1 tkinter库的使用

本文主要讲解tkinter库的使用,本文使用的环境为python3.7,与python2.x的语法有区别,请注意区分。
tkinter是python内置的标准GUI库,也是最为常用和简单的一个GUI设计库。

#!/usr/bin/env python      
import tkinter as tk       

class Application(tk.Frame):              
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)   
        self.grid()                       
        self.createWidgets()

    def createWidgets(self):
        self.quitButton = tk.Button(self, text='Quit',
            command=self.quit)            
        self.quitButton.grid()            

app = Application()                       
app.master.title('Sample application')    
app.mainloop()

这是官方的示例,旨在创建一个只包含退出按钮的窗体程序。
(采用面向对象编程方法)。因为我不会面向对象,本文只讲解面向过程如何使用。
其中导入库从import Tkinter变为import tkinter是由于python语法变化导致,请使用python2.x的同学注意。
面向过程编码时,一个最简单的窗口程序:
实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import tkinter as tk
window = tk.Tk()
window.title('软件名')
window.geometry('720x480') #分辨率
window.mainloop()
                     

其中#!/usr/bin/python是为保证本代码可以在linux中也可以正常运行。# -*- coding: UTF-8 -*-保证代码的编写格式为uft-8编码格式,不会应为格式问题导致程序无法运行。
import tkinter as tk:导入tkinter库,并且用tk代指tkinter
window = tk.Tk():初始化窗口程序
window.mainloop():进入消息循环
tkinter库包括15种的基本部件,包括

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

1.1.2 button的使用

button是按钮控件,用于给图形程序添加按钮。
以制作一个寻找文件的GUI为例说明:

import tkinter as tk 
import os#导入文件库,便于后期读写文件
from tkinter import*
from tkinter import filedialog#导入文件查询库
def search():#定义search函数
    file_path = filedialog.askopenfilename()
    print(file_path)#输出文件路径
window = tk.Tk()
file_search = tk.Button(window,text = '查找文件',bg = "white",command = search,relief = GROOVE)
window.mainloop()

对于button的语法规则:
变量 = tk.Button(继承的窗口,属性 = 参数)
参数包括

属性功能
activebackground当鼠标放上去时,按钮的背景色
activeforeground当鼠标放上去时,按钮的前景色
bd按钮边框的大小,默认为 2 个像素
bg按钮的背景色
command按钮关联的函数,当按钮被点击时,执行该函数
fg按钮的前景色(按钮文本的颜色)
font文本字体
height按钮的高度
highlightcolor要高亮的颜色
image按钮上要显示的图片
justify显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTER
padx按钮在x轴方向上的内边距(padding),是指按钮的内容与按钮边缘的距离
pady按钮在y轴方向上的内边距(padding)
relief边框样式,设置控件3D效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT
state设置按钮组件状态,可选的有NORMAL、ACTIVE、 DISABLED,默认 NORMAL
underline下划线,默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线,为 1 时,前两个字符带下划线,以此类推
width按钮的宽度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小)
wraplength限制按钮每行显示的字符的数量
text按钮的文本内容
anchor锚选项,控制文本的位置,默认为中心

查找文件只需要使用库里自带的函数就可以做到变量名 = filedialog.askopenfilename(),非常的easy~

1.1.3 cavans的使用

以插入图片文件为例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import tkinter as tk
window = tk.Tk()
canvas = tk.Canvas()
w = Canvas(window,width = 500, height = 500, bg = "white")
filename = PhotoImage(file = "BIT.gif")
image = w.create_image(0,0,anchor = "nw" ,image = filename)
w.pack()
window.mainloop()

语法规则:w = tk.Canvas(继承的窗口, 属性 = 参数)

属性功能
bd边框宽度,单位像素,默认为 2 像素
bg背景色
confine如果为true(默认),画布不能滚动到可滑动的区域外
cursor光标的形状设定,如arrow, circle, cross, plus 等
height高度
highlightcolor要高亮的颜色
relief边框样式,可选值为FLAT、SUNKEN、RAISED、GROOVE、RIDGE,默认为 FLAT
scrollregion一个元组 tuple (w, n, e, s),定义了画布可滚动的最大区域,w 为左边,n 为头部,e 为右边,s 为底
width画布在 X 坐标轴上的大小
xscrollincrement用于滚动请求水平滚动的数量值
xscrollcommand水平滚动条,如果画布是可滚动的,则该属性是水平滚动条的 .set()方法
yscrollcommand垂直滚动条,如果画布是可滚动的,则该属性是垂直滚动条的.set()方法

如果要插入图片,语法:
id = C.create_image(x, y, option, ...)

属性功能
anchor默认值是anchor=tk.CENTER,意味着图像以(x,y)位置为中心。有关此选项的可能值,请参见第5.5节“锚点”。例如,如果指定anchor=tk.S,则将定位图像,使点(x,y)位于图像底部(南)边缘的中心
disabledimage项目处于非活动状态时显示的图像
image要显示的图像
state图像对象是创建的tk.NORMAL,对鼠标可以存在响应。将此值设置tk.DISABLED为使其变灰并且对鼠标无响应。如果将其设置为 tk.HIDDEN,则该项目不可见
tags如果是单个字符串,则使用该字符串标记图像。使用字符串元组用多个标签标记图像

可插入的图片格式为GIF,其他格式请转换为此格式,其他格式会报错

2.1 后记

我目前就用到了这点东西,所以我也就写了这部分,其他的部分没有提及,如果我后期要用的话会补写在这里。

添加新评论

评论列表