Python标准图形化界面GUI库入门指南– Tkinter

2021-04-21 15:11:50 浏览数 (1)

介绍

图形用户界面(GUI)是为用户交互提供灵活性的界面。它的交互性使我着迷。应用程序越吸引人,游戏开发就越好。

GUI的最常见组件是主窗口,按钮,文本输入,标签,菜单等。在Python中进行GUI开发的最常见选项是Tkinter,wxPython和JPython。

我们将在本文中讨论Tkinter,创建一个小游戏并可视化结果。

Tkinter概述

Python提供了一个名为Tkinter的标准GUI库。Tkinter模块有助于快速简便地创建GUI应用程序。Tkinter提供了15种类型的小部件。一些常见的按钮,标签,框架,菜单。消息,单选按钮,文本,滚动条等。

在本文中,我们将创建一个小游戏。用户将持续获得数字问题。他们将回答并单击Enter进入下一个问题,直到他们决定退出并处理结果。

正确和不正确的答案将被捕获,以在最后显示结果。我们将使用标签,结束,条目,文本,按钮之类的小部件。事不宜迟,让我们开始实施吧!

执行

1.导包

将所有包分开导入是个好习惯。

代码语言:javascript复制
import tkinter
import random
from random import randint
from tkinter import Button
import matplotlib.pyplot as plt
import numpy as np
2.创建一个GUI窗口和全局变量声明

我们将创建界面布局。确定版面大小和一个引人注目的标题

代码语言:javascript复制
root = tkinter.Tk()
root.title("Are you smart!!")
root.geometry("400x200")
correct_result=0
correct_answers=0
total_questions=0
incorrect_answer=0
3.评估结果的函数

我们将创建一个小小的函数定义以完成使代码易于维护和易于阅读的任务

代码语言:javascript复制
def evaluate(event):
    global correct_result
    global user_input
    user_input_given = user_input.get()
    if str(user_input_given) == str(correct_result):
        global correct_answers
        correct_answers  = 1
        nextQuestion()
    else:
        global incorrect_answer
        incorrect_answer  = 1
        result = tkinter.Label(root, text="Hard Luck!!nThe correct answer is : " str(correct_result), font=('Helvetica', 10))
        result.pack()
        nextQuestion()
        root.after(1500, result.destroy)
4.创建问题的函数

我们将使用random来创建随机整数,并为' ','-'和'*'运算符创建随机选择,以便用户可以获取随机的数字问题集来回答

代码语言:javascript复制
def nextQuestion():
    user_input.focus_set()
    user_input.delete(0, tkinter.END)
    global first_num
    first_num = randint(1,15)
    global second_num
    second_num = randint(1,15)
    global character
    character = random.choice(" -*")
    global correct_result
    if character == '*':
        correct_result = first_num*second_num
    if character == ' ':
        correct_result = first_num second_num
    if character == '-':
        correct_result = first_num-second_num
    text="Enter the value of " str(first_num) " " character " " str(second_num)
    global total_questions
    total_questions  = 1
    user_question.config(text=text)
    user_question.pack()
5.退出函数

我们将创建一个微型函数以退出并记录结果

代码语言:javascript复制
def exitThis():
    print("Total Questions attended : " str(total_questions))
    print("Total Correct Answers : " str(correct_answers))
    print("Total Incorrect Answers : " str(incorrect_answer))
    root.destroy()
6.最初的问题

我们将基于随机整数和数字运算符的随机集合创建问题的初始集合

代码语言:javascript复制
first_num = randint(1,15)
second_num = randint(1,15)
character = random.choice(" -*")
if character == '*':
    correct_result = first_num*second_num
if character == ' ':
    correct_result = first_num second_num
if character == '-':
    correct_result = first_num-second_num
7.标签创建

我们将创建界面的文本和布局

代码语言:javascript复制
user_question = tkinter.Label(root, text="Enter the value of " str(first_num) " " character " " str(second_num), font=('Helvetica', 10))
user_question.pack()
user_input = tkinter.Entry(root)
root.bind('<Return>',evaluate)
user_input.pack()
user_input.focus_set()
exitButton = Button(root, text="EXIT and Check Result", command=exitThis)
exitButton.pack(side="top", expand=True, padx=4, pady=4)
8.启动GUI
代码语言:javascript复制
root.mainloop()
9.结果可视化

在用户决定退出游戏后,我们将使用条形图和饼形图向用户显示结果

代码语言:javascript复制
#Plotting the bar graph
plt.figure(0)
objects = ('Total Number of Questions','Correct Answers','Incorrect answers')
y_pos = np.arange(len(objects))
stats = [total_questions,correct_answers,incorrect_answer]
plt.bar(y_pos, stats, align='center', alpha=0.5)
plt.xticks(y_pos, objects)
plt.ylabel('Numbers')
plt.title('Your Result!')
代码语言:javascript复制
#Plotting the pie chart
if str(total_questions) != "0":
plt.figure(1)
labels = 'Correct Answers','Incorrect answers'
sizes = [correct_answers,incorrect_answer]
colors = ['green', 'red']
explode = (0.1, 0) # explode 1st slice
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=140)
plt.axis('equal')

#Show both the graphs
plt.show()

结论

如果你走到这一步,那么你一定真的很感兴趣!

让我们看看它最终的样子

你可以点击以下链接查看代码

  • https://github.com/prachiprakash26/Play-with-Numbers

☆ END ☆

代码语言:javascript复制
个人微信(如果没有备注不拉群!)请注明:地区 学校/企业 研究方向 昵称


下载1:何恺明顶会分享
在「AI算法与图像处理」公众号后台回复:何恺明,即可下载。总共有6份PDF,涉及 ResNet、Mask RCNN等经典工作的总结分析
下载2:终身受益的编程指南:Google编程风格指南
在「AI算法与图像处理」公众号后台回复:c  ,即可下载。历经十年考验,最权威的编程规范!
代码语言:javascript复制
下载3 CVPR2021
在「AI算法与图像处理」公众号后台回复:CVPR,即可下载1467篇CVPR 2020论文 和 CVPR 2021 最新论文

点亮

,告诉大家你也在看

0 人点赞