clicked.connect()将不会访问该方法

时间:2018-02-15 05:09:01

标签: python user-interface pyqt pyqt5 unreachable-code

我有一个单独的脚本称之为...我不明白为什么我的按钮点击没有进入相应的功能。我对此很新,所以如果你知道答案,你能解释一下,以便我能学到它。

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

class Window (QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.urlEdit = QLineEdit()
        self.windowWid = QWidget()

        urlLabel = QLabel("Enter website to scrape:")
        self.urlEdit.setFixedHeight(30)
        self.urlEdit.setFixedWidth(200)
        layout = QGridLayout(self.windowWid)
        layout.addWidget(urlLabel, 0, 0)
        layout.addWidget(self.urlEdit, 0, 1)
        done = QPushButton("Done",self)

        done.setFixedWidth(60)
        layout.addWidget(done,2,3)
        layout.setRowStretch(4, 1)
        layout.setColumnStretch(4,1)
        done.clicked.connect(self.grabtext)

    def grabtext(self):
        print("CANT REACH HERE")
        answer = self.urlEdit.text()
        print(answer)

1 个答案:

答案 0 :(得分:1)

删除此行:self.windowWid = QWidget() 并将layout = QGridLayout(self.windowWid)更改为layout = QGridLayout(self)

基本上发生的事情就是当你打电话来显示这个小部件时,用self.windowWid = QWidget()行初始化一个空白的QWidget,然后将你的布局和其他元素分配给这个小部件。您希望将这些元素分配给Window小部件的实例,这就是您使用layout = QGridLayout(self)的原因。