文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python学习之GUI(Tkinter

2023-01-31 07:14

关注

button按钮的生成:

import Tkinter as tk
window=tk.Tk()

def buttonClick():
    print "Beep!"

button=tk.Button(window,text="Click me!",command=buttonClick)
button.pack()
window.mainloop()


同理将方法改为改变按钮上的文字

import Tkinter as tk
window=tk.Tk()

def buttonClick():
#    print "Beep!"
    button.config(text="Clicked!")
button=tk.Button(window,text="Click me!",command=buttonClick)
button.pack()
window.mainloop()


点击按钮的计数

import Tkinter as tk
window=tk.Tk()

count=0

def buttonCount():
    global count
    count+=1
    button.config(text=str(count))

button=tk.Button(window,text="count",command=buttonCount)
button.pack()
window.mainloop()

创建文本框,里面有一个按钮和文本框,通过获取文本框的内容,每点击一次按钮,都复制文本框中的内容并一起显示在文本框中。

import Tkinter as tk
window=tk.Tk()

def changeStr():
    stringCopy=entry.get()
    entry.insert(0,stringCopy)

entry=tk.Entry(window)
button=tk.Button(window,text="StrChange",command=changeStr)

entry.pack()
button.pack()
window.mainloop()

其中,entry.insert中参数第一个为插入的位置。


将文本框中的内容反面显示于文本框中

import Tkinter as tk
window=tk.Tk()

def changeStr():
    stringCopy=entry.get()
    stringCopy=stringCopy[::-1]
    entry.delete(0,tk.END)
    entry.insert(0,stringCopy)

entry=tk.Entry(window)
button=tk.Button(window,text="StrChange",command=changeStr)

entry.pack()
button.pack()
window.mainloop()

添加密码框,用于输入密码的文本框常常在输入密码时不会显示密码,而是在每个字符的位置显示星号(*),使用方式:在添加文本框时,添加一个额外的具名自变量,这样文本框就变成了一个密码框

在GUI中会有一个输入密码的框和一个提交密码的按钮。如果密码正确,底部会出现一个写有Correct的标签,负责它会写Incorrect。

import Tkinter as tk
window=tk.Tk()

def checkPassword():
    password="Apple"
    enterPass=passwordEntry.get()
    if enterPass == password:
        confirmLabel.config(text="Correct")
    else:
        confirmLabel.config(text="Incorrect")


passwordLabel=tk.Label(window,text="Password")
passwordEntry=tk.Entry(window,show="*")

button=tk.Button(window,text="Enter",command=checkPassword)
confirmLabel=tk.Label(window)

passwordLabel.pack()
passwordEntry.pack()
button.pack()
confirmLabel.pack()

window.mainloop()

构造句子生成器:列表与随机函数的配合使用

import Tkinter as tk
import random
window=tk.Tk()

def randomNoun():
    nouns=["cats","hippos","cakes"]
    noun=random.choice(nouns)
    return noun

def randomVerb():
    verbs=["eats","likes","hates","has"]
    verb=random.choice(verbs)
    return verb

def  buttonClick():
    name=nameEntry.get()
    verb=randomVerb()
    noun=randomNoun()
    sentence=name+" "+verb+" "+noun
    result.delete(0,tk.END)
    result.insert(0,sentence)

nameLabel=tk.Label(window,text="Name:")
nameEntry=tk.Entry(window)
button=tk.Button(window,text="Generate",command=buttonClick)
result=tk.Entry(window)

nameLabel.pack()
nameEntry.pack()
button.pack()
result.pack()
window.mainloop()

猜数字游戏:生成一个1-10之间的随机数,看是否成功猜测,并计算游戏的胜利次数(标签显示)

import random
import Tkinter as tk
window=tk.Tk()

maxNo=10
score=0
rounds=0

def buttonClick():
    global score
    global rounds
    try:
        guess=int(guessBox.get())
        if 0<guess<=maxNo:
            result=random.randrange(1,maxNo+1)
            if guess==result:
                score=score+1
            rounds+=1
        else:
            result="Entry not valid"
    except:
        result="Entry not valid"

    resultLabel.config(text=result)
    scoreLabel.config(text=str(score)+"/"+str(rounds))
    guessBox.delete(0,tk.END)

guessLabel=tk.Label(window,text="Enter a number from 1 to"+str(maxNo))
guessBox=tk.Entry(window)
resultLabel=tk.Label(window)
scoreLabel=tk.Label(window)
button=tk.Button(window,text="guess",command=buttonClick)

guessLabel.pack()
guessBox.pack()
resultLabel.pack()
scoreLabel.pack()
button.pack()

window.mainloop()'''


'''import Tkinter as tk
window=tk.Tk()

slider=tk.Scale(window,from_=0,to=100)
slider.pack()
tk.mainloop()

滚动条的创建与使用

import Tkinter as tk
window=tk.Tk()

slider=tk.Scale(window,from_=0,to=100)
slider.pack()
tk.mainloop()

画布的创建

import Tkinter as tk
window=tk.Tk()

colour="#FF0000"
canvas=tk.Canvas(window,height=300,width=300,bg=colour)
canvas.pack()
window.mainloop()

颜色选择器:画布与滚动条的配合使用

注:通过三个滚动条的选择从而决定三原色红,绿,蓝三个颜色的占用,从而组成喜欢的颜色。而在实际画画中,所有的颜色由红,黄,蓝混合组成。

import Tkinter as tk
window=tk.Tk()

def sliderUpdate(source):
    red=redSlider.get()
    green=greenSlider.get()
    blue=blueSlider.get()
    
    colour="#%02x%02x%02x"%(red,green,blue)
    canvas.config(bg=colour)

redSlider=tk.Scale(window,from_=0,to=255,command=sliderUpdate)
greenSlider=tk.Scale(window,from_=0,to=255,command=sliderUpdate)
blueSlider=tk.Scale(window,from_=0,to=255,command=sliderUpdate)
canvas=tk.Canvas(window,width=200,height=200)

redSlider.grid(row=1,column=1)
greenSlider.grid(row=1,column=2)
blueSlider.grid(row=1,column=3)
canvas.grid(row=2,column=1,columnspan=3)

tk.mainloop()

改进:添加一个文本框用来显示三原色的选择(16进制)

import Tkinter as tk
window=tk.Tk()

def sliderUpdate(source):
    red=redSlider.get()
    green=greenSlider.get()
    blue=blueSlider.get()
    
    colour="#%02x%02x%02x"%(red,green,blue)
    canvas.config(bg=colour)
    hexText.delete(0,tk.END)
    hexText.insert(0,colour)

redSlider=tk.Scale(window,from_=0,to=255,command=sliderUpdate)
greenSlider=tk.Scale(window,from_=0,to=255,command=sliderUpdate)
blueSlider=tk.Scale(window,from_=0,to=255,command=sliderUpdate)
canvas=tk.Canvas(window,width=200,height=200)
hexText=tk.Entry(window)

redSlider.grid(row=1,column=1)
greenSlider.grid(row=1,column=2)
blueSlider.grid(row=1,column=3)
canvas.grid(row=2,column=1,columnspan=3)
hexText.grid(row=3,column=1,columnspan=3)

tk.mainloop()

一个计点击速度的游戏:记录点击的次数,直到达到目地数,输出所花费时间

import Tkinter as tk
import time
window=tk.Tk()

clicks=0
start=0
goal=10

def buttonClick():
    global clicks
    global start

    if clicks==0:
        start=time.time()
        clicks=clicks+1
    elif clicks+1>=goal:
        score=time.time()-start
        label.config(text="Time: "+str(score))
        clicks=0
    else:
        clicks=clicks+1
    slider.set(clicks)

button=tk.Button(window,text="Click me",command=buttonClick)
slider=tk.Scale(window,from_=0,to=goal)
label=tk.Label(window)
button.pack()
slider.pack()
label.pack()
window.mainloop()


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯