用户:
屑雷神索尔查看:1 回复:5 评论:1 创建时间:2020-08-11T11:00:12
PySide2(python)里控件的disconnect()函数要怎么用啊?为什么我每次用都会有RuntimeError啊?
屑雷神索尔Traceback (most recent call last):
File "C:\Users\hp\Desktop\learn code\GUI\背单词软件\万词斩.py", line 142, in <module>
window = Word()
File "C:\Users\hp\Desktop\learn code\GUI\背单词软件\万词斩.py", line 41, in __init__
self.get_question()
File "C:\Users\hp\Desktop\learn code\GUI\背单词软件\万词斩.py", line 89, in get_question
self.connect_()
File "C:\Users\hp\Desktop\learn code\GUI\背单词软件\万词斩.py", line 68, in connect_
self.disconnect_()
File "C:\Users\hp\Desktop\learn code\GUI\背单词软件\万词斩.py", line 56, in disconnect_
self.buttons[0].clicked.disconnect(self.b0)
RuntimeError: Failed to disconnect signal clicked().
点赞0
评论
屑雷神索尔源代码:
导入库
from PySide2.QtWidgets import *
import sys
from PySide2.QtCore import *
from ui_万词斩 import Ui_words
import random
# 窗口类
class Word(QMainWindow, Ui_words):
def __init__(self):
super().__init__()
self.setupUi(self)
self.show()
# 设置属性
self.words = {
'钢笔': 'pen', '铅笔': 'pencil', '铅笔盒': 'pencil-case',
'尺子': 'ruler', '橡皮': 'eraser', '蜡笔': 'crayon', '书': 'book',
'书包': 'bag', '卷笔刀': 'sharpener', '学校': 'school', '头': 'head',
'脸': 'face', '鼻子': 'nose', '嘴': 'mouth', '眼睛': 'eye', '耳朵': 'ear',
'胳膊': 'arm', '手指': 'finger', '腿': 'leg', '脚': 'foot', '身体': 'body',
'红色的': 'red', '黄色的': 'yellow', '绿色的': 'green', '蓝色的': 'blue',
'紫色的': 'purple', '白色的': 'white', '黑色的': 'black', '橙色的': 'orange',
'粉色的': 'pink', '棕色的': 'brown', '猫': 'cat', '狗': 'dog', '猴子': 'monkey', '熊猫': 'panda', '兔子': 'rabbit', '鸭子': 'duck', '猪': 'pig',
'鸟': 'bird', '熊': 'bear', '大象': 'elephant', '老鼠': 'mouse',
'松鼠': 'squirrel', '蛋糕': 'cake', '面包': 'bread', '热狗': 'hot dog',
'汉堡包': 'hamburger', '鸡肉': 'chicken', '茶': 'tea', '薯条': 'French fries',
'可乐': 'coke', '果汁': 'juice', '牛奶': 'milk', '水': 'water',
'咖啡': 'coffee', '一': 'one', '二': 'two', '三': 'three', '四': 'four',
'五': 'five', '六': 'six', '七': 'seven', '八': 'eight', '九': 'nine',
'十': 'ten', '玩具娃娃': 'doll', '小船': 'boat', '球': 'ball', '风筝': 'kite',
'气球': 'balloon', '小汽车': 'car', '飞机': 'plane', '添加': 'add', '玩耍': 'play',
}
#按钮列表
self.buttons=[self.b_1,self.b_5,self.b_6,self.b_3,self.b_7,self.b_4,self.b_8,self.b_9,self.b_10]
self.word = None
self.filepath = None
self.words_count = 0
self.get_question()
self.answer_=''
#重新连接
self.submit.clicked.connect(self.verify)
self.buttons[0].clicked.connect(self.b0)
self.buttons[1].clicked.connect(self.b1)
self.buttons[2].clicked.connect(self.b2)
self.buttons[3].clicked.connect(self.b3)
self.buttons[4].clicked.connect(self.b4)
self.buttons[5].clicked.connect(self.b5)
self.buttons[6].clicked.connect(self.b6)
self.buttons[7].clicked.connect(self.b7)
self.buttons[8].clicked.connect(self.b8)
#取消链接函数
def disconnect_(self):
self.buttons[0].clicked.disconnect(self.b0)
self.buttons[1].clicked.disconnect(self.b1)
self.buttons[2].clicked.disconnect(self.b2)
self.buttons[3].clicked.disconnect(self.b3)
self.buttons[4].clicked.disconnect(self.b4)
self.buttons[5].clicked.disconnect(self.b5)
self.buttons[6].clicked.disconnect(self.b6)
self.buttons[7].clicked.disconnect(self.b7)
self.buttons[8].clicked.disconnect(self.b8)
#链接函数
def connect_(self):
#取消链接
self.disconnect_()
#打乱按钮
random.shuffle(self.buttons)
#重新连接
self.submit.clicked.connect(self.verify)
self.buttons[0].clicked.connect(self.b0)
self.buttons[1].clicked.connect(self.b1)
self.buttons[2].clicked.connect(self.b2)
self.buttons[3].clicked.connect(self.b3)
self.buttons[4].clicked.connect(self.b4)
self.buttons[5].clicked.connect(self.b5)
self.buttons[6].clicked.connect(self.b6)
self.buttons[7].clicked.connect(self.b7)
self.buttons[8].clicked.connect(self.b8)
#出问题
def get_question(self):
#清空输入框
self.answer_=''
self.answer.setText('')
#重新连接
self.connect_()
#随机的键
word=random.choice(list(self.words.keys()))
#获取正确答案
self.word=self.words[word]
#删除
self.words.pop(word)
#显示
self.question.setText(word)
#按钮设置
word=list(self.word)
for b in range(9):
try:
self.buttons[b].setText(word[b])
self.buttons[b].letter=word[b]
except:
letter = random.choice(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s'])
self.buttons[b].setText(letter)
self.letter=letter
#按钮函数
def button(self,a):
self.answer_+=self.buttons[a].letter
self.answer.setText(self.answer_)
#对应函数
def b0(self):
self.button(0)
def b1(self):
self.button(1)
def b2(self):
self.button(2)
def b3(self):
self.button(3)
def b4(self):
self.button(4)
def b5(self):
self.button(5)
def b6(self):
self.button(6)
def b7(self):
self.button(7)
def b8(self):
self.button(8)
#判断对错
def verify(self):
if self.answer_==self.word:
QMessageBox.information(self,'','答对了~✿✿ヽ(°▽°)ノ✿✿✿ヽ(°▽°)ノ✿')
self.get_question()
else:
QMessageBox.information(self,'','答错了……')
self.get_question()
# 主程序
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Word()
sys.exit(app.exec_())
点赞0
评论
屑雷神索尔ui_万词斩.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '���ն.ui',
# licensing of '���ն.ui' applies.
#
# Created: Sat Aug 8 14:21:47 2020
# by: pyside2-uic running on PySide2 5.11.2
#
# WARNING! All changes made in this file will be lost!
from PySide2 import QtCore, QtGui, QtWidgets
class Ui_words(object):
def setupUi(self, words):
words.setObjectName("words")
words.resize(350, 570)
self.centralwidget = QtWidgets.QWidget(words)
self.centralwidget.setObjectName("centralwidget")
self.question = QtWidgets.QLabel(self.centralwidget)
self.question.setGeometry(QtCore.QRect(40, 30, 261, 121))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(30)
font.setWeight(50)
font.setBold(False)
self.question.setFont(font)
self.question.setText("")
self.question.setAlignment(QtCore.Qt.AlignCenter)
self.question.setObjectName("question")
self.answer = QtWidgets.QLabel(self.centralwidget)
self.answer.setGeometry(QtCore.QRect(60, 170, 201, 91))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(20)
font.setWeight(50)
font.setBold(False)
self.answer.setFont(font)
self.answer.setText("")
self.answer.setAlignment(QtCore.Qt.AlignCenter)
self.answer.setObjectName("answer")
self.b_3 = QtWidgets.QPushButton(self.centralwidget)
self.b_3.setGeometry(QtCore.QRect(20, 300, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_3.setFont(font)
self.b_3.setObjectName("b_3")
self.b_4 = QtWidgets.QPushButton(self.centralwidget)
self.b_4.setGeometry(QtCore.QRect(240, 300, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_4.setFont(font)
self.b_4.setObjectName("b_4")
self.b_1 = QtWidgets.QPushButton(self.centralwidget)
self.b_1.setGeometry(QtCore.QRect(130, 300, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_1.setFont(font)
self.b_1.setObjectName("b_1")
self.b_5 = QtWidgets.QPushButton(self.centralwidget)
self.b_5.setGeometry(QtCore.QRect(20, 380, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_5.setFont(font)
self.b_5.setObjectName("b_5")
self.b_6 = QtWidgets.QPushButton(self.centralwidget)
self.b_6.setGeometry(QtCore.QRect(130, 380, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_6.setFont(font)
self.b_6.setObjectName("b_6")
self.b_7 = QtWidgets.QPushButton(self.centralwidget)
self.b_7.setGeometry(QtCore.QRect(240, 380, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_7.setFont(font)
self.b_7.setObjectName("b_7")
self.b_8 = QtWidgets.QPushButton(self.centralwidget)
self.b_8.setGeometry(QtCore.QRect(20, 450, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_8.setFont(font)
self.b_8.setObjectName("b_8")
self.b_9 = QtWidgets.QPushButton(self.centralwidget)
self.b_9.setGeometry(QtCore.QRect(130, 450, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_9.setFont(font)
self.b_9.setObjectName("b_9")
self.b_10 = QtWidgets.QPushButton(self.centralwidget)
self.b_10.setGeometry(QtCore.QRect(240, 450, 93, 61))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(13)
self.b_10.setFont(font)
self.b_10.setObjectName("b_10")
self.submit = QtWidgets.QPushButton(self.centralwidget)
self.submit.setGeometry(QtCore.QRect(40, 530, 291, 28))
self.submit.setObjectName("submit")
words.setCentralWidget(self.centralwidget)
self.retranslateUi(words)
QtCore.QMetaObject.connectSlotsByName(words)
def retranslateUi(self, words):
words.setWindowTitle(QtWidgets.QApplication.translate("words", "MainWindow", None, -1))
self.b_3.setText(QtWidgets.QApplication.translate("words", "a", None, -1))
self.b_4.setText(QtWidgets.QApplication.translate("words", "c", None, -1))
self.b_1.setText(QtWidgets.QApplication.translate("words", "b", None, -1))
self.b_5.setText(QtWidgets.QApplication.translate("words", "c", None, -1))
self.b_6.setText(QtWidgets.QApplication.translate("words", "c", None, -1))
self.b_7.setText(QtWidgets.QApplication.translate("words", "c", None, -1))
self.b_8.setText(QtWidgets.QApplication.translate("words", "c", None, -1))
self.b_9.setText(QtWidgets.QApplication.translate("words", "c", None, -1))
self.b_10.setText(QtWidgets.QApplication.translate("words", "c", None, -1))
self.submit.setText(QtWidgets.QApplication.translate("words", "提交", None, -1))
点赞0
评论