鱼C论坛

 找回密码
 立即注册

[技术交流] py3000愉快的开始

[复制链接]
 楼主| 发表于 2018-1-9 18:43:00 | 显示全部楼层

067GUI的终极选择:Tkinter4(中2)

from tkinter import *

root = Tk()

Label(root, text="账号:").grid(row=0, column=0)   #   第0行第一列
Label(root, text="密码:").grid(row=1, column=0)

    #   然后需要两个变量用于存放账号和密码
v1 = StringVar()    #   输入框里是字符串的类型,所以就用tkinter的StringVar来存放
v2 = StringVar()

e1 = Entry(root, textvariable=v1)
e2 = Entry(root, textvariable=v2, show="*")     #   显示的内容
e1.grid(row=0, column=1, padx=10, pady=5)
e2.grid(row=1, column=1, padx=10, pady=5)

def show():
    print("账号:%s" % e1.get())
    print("密码:%s" % e2.get())

Button(root, text="歪,开门", width=10, command=show)\
             .grid(row=3, column=0, sticky=W, padx=10, pady=5)   #   放左边

Button(root, text="溜了溜了", width=10, command=root.quit)\
             .grid(row=3, column=1, sticky=E, padx=10, pady=5)  #   放右边

mainloop()



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-10 18:36:51 | 显示全部楼层

067GUI的终极选择:Tkinter4(中3)

from tkinter import *

master = Tk()

def test():
    if e1.get() == "1024":
        print("正确!")
        return True     #   返回True后并打印正确
    else:
        print("错误!")
        e1.delete(0, END)
        return False    #   返回False后并清空这个输入框


v = StringVar()

e1 = Entry(master, textvariable=v, validate="focusout", validatecommand=test)   #   当焦点移出的时候,Ta就会去调用validatecommand这个制定的函数
e2 = Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-12 13:38:56 | 显示全部楼层

067GUI的终极选择:Tkinter4(中4)

from tkinter import *

master = Tk()

v = StringVar()

def test(content, reason, name):
    if content == "1024":
        print("正确")
        print(content, reason, name)
        return True
    else:
        print("错误")
        print(content, reason, name)
        return False

testCMD = master.register(test)
e1 = Entry(master, textvariable=v, validate="focusout", \
           validatecommand=(testCMD, '%P', '%v', '%W'))
e2 = Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)


mainloop()
>>>
================ RESTART: C:/Users/Administrator/Desktop/2.py ================
正确
1024 focusout .!entry        #        1024是content,也就是输入框的内容,reason是focusout

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-13 23:56:46 | 显示全部楼层

067GUI的终极选择:Tkinter4(下)

本帖最后由 摆渡终极鉴黄师 于 2018-1-14 21:27 编辑

from tkinter import *

master = Tk()

frame = Frame(master)
frame.pack(padx=10, pady=10)

v1 = StringVar()
v2 = StringVar()
v3 = StringVar()    #   用来存放计算好的值

def test(content):
    return content.isdight()

testCMD = master.register(test)
e1 = Entry(frame, width=10, textvariable=v1, validate="key", \
           validatecommand=(testCMD, '%P')).grid(row=0, column=0)     #   variable选项被指定为key的时候,有任何输入操作都会立刻被拦截,然后来调用验证函数,只有当这个验证函数返回True,Ta才会将这个内容放在textvariable关联的变量里面

Label(frame, text="+").grid(row=0, column=1)

e2 = Entry(frame, width=10, textvariable=v2, validate="key", \
           validatecommand=(testCMD, '%P')).grid(row=0, column=2)

Label(frame, text="=").grid(row=0, column=3)

e3 = Entry(frame, width=10, textvariable=v3, state="readonly").grid(row=0, column=4)

def calc():
    result = int(v1.get()) + int(v2.get())
    v3.set(str(result))

Button(frame, text="计算结果", command=calc).grid(row=1, column=2, pady=5)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-15 23:27:09 | 显示全部楼层

068GUI的终极选择:Tkinter5(上)

本帖最后由 摆渡终极鉴黄师 于 2018-1-17 00:31 编辑

Listbox是用列表宽的形式出来的,并适合滚动和操作

from tkinter import *

master = Tk()

# 创建一个空列表
theLB = Listbox(master, setgrid=True)
theLB.pack()

# 往列表里添加数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-17 00:31:13 | 显示全部楼层

068GUI的终极选择:Tkinter5(上2)

本帖最后由 摆渡终极鉴黄师 于 2018-1-19 14:02 编辑

from tkinter import *

master = Tk()

theLB = Listbox(master)
theLB.pack()

theLB.insert(0, "不要观察并思考")
theLB.insert(END, "要分析并思考")

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-17 23:51:40 | 显示全部楼层

068GUI的终极选择:Tkinter5(上3)

本帖最后由 摆渡终极鉴黄师 于 2018-1-19 13:52 编辑

from tkinter import *

master = Tk()

theLB = Listbox(master)
theLB.pack()

for item in ["鸡蛋", "鸭蛋", "鹅蛋", "李狗嗨"]:
    theLB.insert(END, item)


theButton = Button(master, text="删除它", \
                   command=lambda x=theLB:x.delete(ACTIVE))        #        lambda的表达式,冒号前面是参数,冒号后面是表达式,然后参数设为x,给Ta传一个参数,这里就等于是LB.delete的意思,ACTIVE表示的是当前选中的值
theButton.pack()

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-19 14:01:48 | 显示全部楼层

068GUI的终极选择:Tkinter5(中)

from tkinter import *

master = Tk()

theLB = Listbox(master, selectmode=EXTENDED, height=16) #   设置一下高度为16,否则最多显示10个,有5个显示不出来
theLB.pack()

for item in (15):
    theLB.insert(END, item)


mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-20 14:37:03 | 显示全部楼层

068GUI的终极选择:Tkinter5(中2)

from tkinter import *

root = Tk()

sb = Scrollbar(root)
sb.pack()

mainloop()
#一个滚动条
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-21 15:34:46 | 显示全部楼层

068GUI的终极选择:Tkinter5(中3)

为了在某个组件上安装垂直滚动条,你需要做两件事:
1.设置该组件的yscrollbarcommand选项为Scrollbar组件的set()方法;
2.设置Scrollbar组件的command选项为该组件的yview()方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-22 15:54:56 | 显示全部楼层

068GUI的终极选择:Tkinter5(中4)

from tkinter import *

root = Tk()

sb = Scrollbar(root)
sb.pack(side=RIGHT, fill=Y)

lb = Listbox(root, yscrollcommand=sb.set)   #   里边滚动会调用sb.set,同时修改滚动条的位置

for i in range(1000):
    lb.insert(END, i)

lb.pack(side=LEFT, fill=BOTH)

sb.config(command=lb.yview) # yview是用来设置好怎么去显示垂直滚动的内容变化

mainloop()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 19:57:55 | 显示全部楼层

068GUI的终极选择:Tkinter5(下)

from tkinter import *

root = Tk()

Scale(root, from_=0, to=42).pack()
Scale(root, from_=0, to=200, orient=HORIZONTAL).pack()

mainloop()
#一个滑块
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-25 01:14:13 | 显示全部楼层

068GUI的终极选择:Tkinter5(下2)

本帖最后由 摆渡终极鉴黄师 于 2018-1-25 23:22 编辑

from tkinter import *

root = Tk()

Scale(root, from_=0, to=42, tickinterval=5, resolution=5, length=200).pack()    #   每5显示一个刻度,精度5
Scale(root, from_=0, to=200, tickinterval=10, orient=HORIZONTAL, length=600).pack()

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-27 02:41:36 | 显示全部楼层

069GUI的终极选择:Tkinter6(上)

from tkinter import *

root = Tk()

text = Text(root, width=30, height=4)
text.pack()


text.insert(INSERT, "cute \n")
text.insert(END,"loli")


#def show():
#    text.image_create(END, image=photo)

def show():
    print("呀~")

b1 = Button(text, text="调戏一下♀", command=show)
text.window_create(INSERT, window=b1)

mainloop()
#一个text组件,可以插入和编辑文本,也可以插入window对象和组件,也可以插入图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-28 23:57:29 | 显示全部楼层

069GUI的终极选择:Tkinter6(上2)

本帖最后由 摆渡终极鉴黄师 于 2018-1-29 00:29 编辑

from tkinter import *

root = Tk()

text = Text(root, width=30, height=30)
text.pack()

photo = PhotoImage(file="截图167105168182118.png")    #        插入的图名

def show():
    text.image_create(END, image=photo)

b1 = Button(text, text="确定", command=show)
text.window_create(INSERT, window=b1)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-29 20:08:04 | 显示全部楼层

069GUI的终极选择:Tkinter6(中)

本帖最后由 摆渡终极鉴黄师 于 2018-1-30 07:16 编辑

Indexes(索引)是用来只想Text组件中文本的位置,跟Python的序列索引一样,Text组件索引也是对应实际自负之间的位置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-30 07:13:38 | 显示全部楼层

069GUI的终极选择:Tkinter6(下)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-31 18:26:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-1 10:25:58 | 显示全部楼层

071GUI的终极选择:Tkinter8(上)

Canvas组件通常用于显示以及编辑图形,可以用来绘制各种形状和组件,在Canvas来绘制对象可以使用create方法,“create”+“下横线_”“所要创建的对象,例如
from tkinter import *

root = Tk()

w = Canvas(root, width=200, height=100)
w.pack()

w.create_line(0,50, 200, 50, fill="yellow")
w.create_line(100, 0, 100, 100, fill="red", dash=(4, 4))
w.create_rectangle(50,25, 150, 75, fill="blue")

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-2 15:21:06 | 显示全部楼层

071GUI的终极选择:Tkinter8(中)

本帖最后由 摆渡终极鉴黄师 于 2018-2-3 17:13 编辑

from tkinter import *

root = Tk()

w = Canvas(root, width=200, height=100)
w.pack()

line1 = w.create_line(0, 50, 200, 50, fill="yellow")
line2 = w.create_line(100, 0, 100, 100, fill="red", dash=(4, 4))
rect1 = w.create_rectangle(50, 25, 150, 75, fill="blue")

w.coords(line1, 0, 25, 200, 25)
w.itemconfig(rect1, fill="red")
w.delete(line2)

Button(root, text="删除全部", command=(lambda x=ALL:w.delete(x))).pack()        #        :前参数后返回值

mainloop()
#点击按钮可以删掉所有对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-18 11:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表