添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

现有一个PyQt5程序,当我把work函数,countTime函数及timeStop函数缩进到QThreadl类中,运行程序点击测试的时候就会提 work() takes 0 positional arguments but 2 were given 对类的理解还不是很到位,有没有大神解答一下如果把work等函数放入class中应该怎样处理才不会报错 正确代码如下:

# -*- coding: utf-8 -*- 
    PyQT5中 QTimer例子
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
global sec
sec=0
class WorkThread(QThread):
    trigger = pyqtSignal()
    def __int__(self):
        super(WorkThread,self).__init__()
    def run(self):
        for i in range(2000000000):
        # 循环完毕后发出信号     
        self.trigger.emit()        
def countTime():
    global  sec
    sec += 1
    # LED显示数字+1
    lcdNumber.display(sec)          
def work():
    # 计时器每秒计数
    timer.start(1000)   
    # 计时开始  
    workThread.start()       
    # 当获得循环完毕的信号时,停止计数  
    workThread.trigger.connect(timeStop)  
def timeStop():
    timer.stop()
    print("运行结束用时",lcdNumber.value())
    global sec
    sec=0
if __name__ == "__main__":      
    app = QApplication(sys.argv) 
    top = QWidget()
    top.resize(300,120)
    # 垂直布局类QVBoxLayout
    layout = QVBoxLayout(top) 
    # 加个显示屏    
    lcdNumber = QLCDNumber()             
    layout.addWidget(lcdNumber)
    button = QPushButton("测试")
    layout.addWidget(button)
    timer = QTimer()
    workThread = WorkThread()
    button.clicked.connect(work)
    # 每次计时结束,触发 countTime
    timer.timeout.connect(countTime)      
    top.show()
    sys.exit(app.exec_())

报错的代码如下: `# -- coding: utf-8 -- PyQT5中 QTimer例子

import sys from PyQt5.QtCore import from PyQt5.QtGui import from PyQt5.QtWidgets import *

global sec sec=0

class WorkThread(QThread): trigger = pyqtSignal() def int(self): super(WorkThread,self).init()

def run(self):
    for i in range(2000000000):
    # 循环完毕后发出信号     
    self.trigger.emit()
def countTime():
    global  sec
    sec += 1
    # LED显示数字+1
    lcdNumber.display(sec)
def work():
    # 计时器每秒计数
    timer.start(1000)   
    # 计时开始  
    workThread.start()       
    # 当获得循环完毕的信号时,停止计数  
    workThread.trigger.connect(timeStop)
def timeStop():
    timer.stop()
    print("运行结束用时",lcdNumber.value())
    global sec
    sec=0

if name == "main":
app = QApplication(sys.argv) top = QWidget() top.resize(300,120)

# 垂直布局类QVBoxLayout
layout = QVBoxLayout(top) 
# 加个显示屏    
lcdNumber = QLCDNumber()             
layout.addWidget(lcdNumber)
button = QPushButton("测试")
layout.addWidget(button)
timer = QTimer()
workThread = WorkThread()
button.clicked.connect(workThread.work)
# 每次计时结束,触发 countTime
timer.timeout.connect(workThread.countTime)
top.show()
sys.exit(app.exec_())