用PyQt5来写个简单的小应用,做出有简单的窗口界面的点名器
首先在QtDesigner中搭建界面,既然是简单的点名器,只要有按钮可以实现开始点名和结束点名就可以了,
再加上一个文本框显示点名的随机出现效果,界面搭建就完成了,注意要改一下新建部件的对象名,一会用代码实现功能时会用到,当然用QtDesigner系统默认的对象名也可以,每个人习惯不同吧.
在QtDesigner中拖进两个PushButton和一个lineEdit改改命名就可以进行代码实现阶段啦
首先分析需求,可以出现名字在界面不停的变换,切无规律,开始与结束都由我操作
通过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_())
运行,成功.