如何用PyQt5写个点名器

用PyQt5来写个简单的小应用,做出有简单的窗口界面的点名器

首先在QtDesigner中搭建界面,既然是简单的点名器,只要有按钮可以实现开始点名和结束点名就可以了,

再加上一个文本框显示点名的随机出现效果,界面搭建就完成了,注意要改一下新建部件的对象名,一会用代码实现功能时会用到,当然用QtDesigner系统默认的对象名也可以,每个人习惯不同吧.

QtDesigner中拖进两个PushButton和一个lineEdit改改命名就可以进行代码实现阶段啦

如何用PyQt5写个点名器_第1张图片

逻辑分析:

首先分析需求,可以出现名字在界面不停的变换,切无规律,开始与结束都由我操作

通过random从列表中随机出无规律的名字,self.lineEdit.setText()方法把名字先出在屏幕中.

代码实现:

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QTimer
import random
qtCreatorFile = "F:\A_code\PyQT_Demo\pointname.ui"
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

QtDesigner生成的ui文件导入进来

class MyApp(QMainWindow, Ui_MainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.star_button.clicked.connect(self.start)
        self.stop_button.clicked.connect(self.stop)

界面的初始化操作,并把两个按钮与我们后面写的两个方法关联起来,也就是让信号和槽关联起来.

    def setname(self):
        name_list = ['\t小李子', '\t常威', '\t周星驰', '\t吴孟达', '\t石班瑜', '\t紫霞仙子', '\t牛魔王', '\t蜘蛛精']
        name = name_list[random.randint(0, len(name_list)-1)]
        self.lineEdit.setText(name)

定义一个设置名字的方法,可随机取出姓名显示在lineEdit上,但是把这个方法作为star按钮的槽显然是不对的,因为这只能实现一个名字的随机显示,我们要的是多个数字滚动出现,这时引入QTimer

    def start(self):
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.setname)
        self.timer.start(100)

首先生成自己的计时器实例,连接timeout到setname中,调用start(x)开始循环每隔x毫秒触发一次setname

    def stop(self):
        self.timer.stop()

在计时器开始后,滚动式随机点名效果已经完成,只要调用self.timer.stop()方法让计时器停止即可.

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())

运行,成功.

如何用PyQt5写个点名器_第2张图片



你可能感兴趣的:(如何用PyQt5写个点名器)