猫史档案馆


PySide2问题

用户:屑雷神索尔屑雷神索尔查看:1 回复:5 评论:1 创建时间:2020-08-11T11:00:12


PySide2(python)里控件的disconnect()函数要怎么用啊?为什么我每次用都会有RuntimeError啊?


回复

上一页1 页 / 共 1下一页
屑雷神索尔屑雷神索尔

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


评论


SGY酥安SGY酥安

我还以为这又是一个python教程贴要进来白嫖....

python渣渣中的渣渣一枚

点赞0


评论


lsk666666lsk666666

center_image

楼主,帮忙解决一下这个问题呗,我好给你调试你的runtimeerror

点赞0


评论