python + tkinter编写B站“暂停选老婆”小程序

GUI编程

最近老师在教GUI编程基础,发现利用tkinter编程还挺方便的。受老师写的“随机点名工具”启发,我动手写了能够随机选图的小程序。程序挺简单,但对于我这种小白来说成果喜人。

在整体功能方面,该小程序由一个窗体,一个标签,一个画布,一个按钮组成;按钮与画布分别放于两个frame中。点击“开始”按钮后,绿色的画布上便开始显示不同的图片,此时按钮上的文字变为“停止”;点击“停止”按钮后,图片便停止滚动,按钮上的文字变为“开始“。

对于图片显示的实现,我采用如下方法,将图片放于画布中。

pic = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg', '11.jpg',
           '12.jpg', '13.jpg', '14.jpg']  #图片的文件名,存于与main.py同一级的文件下
    img_open = Image.open(pic[index])
    img_png = ImageTk.PhotoImage(img_open)
    img_png.size = (10,20)
    canvas.create_image(200,400, image=img_png)
    canvas.grid(row=1, column=1)
    index = random.randrange(0,14)

但是目前我还不知道如何改变图片的实际大小,导致呈现出来的效果如下:
在这里插入图片描述
并不能显示完整图片
并不能显示完整图片,希望有大佬能够指点指点,感激不尽。

以下为完整代码:

from tkinter import *
import tkinter
import random
import PIL
from PIL import Image, ImageTk

pic = None
img_png = None
img_open = None
start = False
index = 0

def choice():
    global pic   #让方法内的局部变量全局可用
    global img_open
    global img_png
    global index
    pic = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg', '11.jpg',
           '12.jpg', '13.jpg', '14.jpg']  #图片的文件名,存于与main.py同一级的文件下
    img_open = Image.open(pic[index])
    img_png = ImageTk.PhotoImage(img_open)
    img_png.size = (10,20)
    canvas.create_image(200,400, image=img_png)
    canvas.grid(row=1, column=1)
    index = random.randrange(0,14)
    pass

def start_choice():
    choice()
    global job
    job = root.after(1, start_choice)  #延时器,反复回调

def run():
    global start
    if start == False:   #一点小细节,用于改变单个按钮的功能
        start_choice()
        start = True
        button1.configure(text = '停止')
    else:
        start = False
        root.after_cancel(job)
        button1.configure(text='开始')

root = Tk()
root.title = ("选图")
root.geometry('400x565')
label = Label(root,text = '以下图片供你选择')
label.pack()

frame0 = Frame(root)
frame0.pack()
canvas = Canvas(frame0, width=400, height=500, bg='green')
canvas.grid(row=1, column=1)

frame = Frame(root)
frame.pack()
button1 = Button(frame,text = '开始',bd = 4,bg="gray",command = run)
button1.grid(row = 1,column = 0)

root.mainloop()

其中我利用了第三方库pillow,需要自行下载。
Github链接如下:https://github.com/Chigland/Choose-your-wife

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值