Python 按钮在pyqt5的第二个窗口上不起作用

Python 按钮在pyqt5的第二个窗口上不起作用,python,button,pyqt5,Python,Button,Pyqt5,我正在使用pyqt5制作一个先到先得的调度程序 我有一个主窗口,其中包括一个文本框,询问用户调度器类型,当点击按钮“GO”时,第二个窗口打开,询问用户有关调度器的更多信息,如进程号和突发时间 单击第二个窗口上的按钮“GO”时,处理信息后应显示甘特图 问题是第二个窗口上的按钮根本不起作用 我已经找到了一个解决方案,但我没有完全得到解决方案,而且我没有使用JSON 代码: 导入系统 从PyQt5导入QtGui 从PyQt5.QtWidgets导入QMainWindow、QApplication、QC

我正在使用pyqt5制作一个先到先得的调度程序

我有一个主窗口,其中包括一个文本框,询问用户调度器类型,当点击按钮“GO”时,第二个窗口打开,询问用户有关调度器的更多信息,如进程号和突发时间

单击第二个窗口上的按钮“GO”时,处理信息后应显示甘特图

问题是第二个窗口上的按钮根本不起作用

我已经找到了一个解决方案,但我没有完全得到解决方案,而且我没有使用JSON

代码:

导入系统 从PyQt5导入QtGui 从PyQt5.QtWidgets导入QMainWindow、QApplication、QComboBox、QDialog、QDialogButtonBox、QFormLayout、QGridLayout、QGroupBox、QHBoxLayout、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QSpinBox、QTextEdit、QVBoxLayoutQSpinBox、QTextEdit、QVBoxLayout 从PyQt5.QtGui导入QIcon 从PyQt5.QtCore导入pyqtlot 将matplotlib.pyplot作为plt导入 将numpy作为np导入 导入链接列表 类主窗口(QMainWindow): 定义初始化(自): super()。\uuuu init\uuuuu() self.setWindowTitle(“我的程序”) self.setWindowIcon(QtGui.QIcon(“download.jpg”)) 自我设定几何(50,50500300) self.home() self.show() def主页(自我): self.label2=QLabel(self) self.label2.setText(“调度器类型”) 自我标签2.移动(10,50) self.textbox2=QLineEdit(self) self.textbox2.move(100,50) self.button=QPushButton(“开始”,self) 自动按钮移动(0200) self.button.clicked.connect(self.runcode) def运行代码(自身): schedular_type=self.textbox2.text() 如果(调度类型==“FCFS”): self.close() self.fcfs=Window2(self) Self.fcfs.\uuuu init\uuuuu() 类窗口2(QMainWindow): 定义初始化(自): super()。\uuuu init\uuuuu() self.setWindowTitle(“我的程序”) self.setWindowIcon(QtGui.QIcon(“download.jpg”)) 自我设定几何(50,50500300) self.home() self.show() def主页(自我): self.label1=QLabel(self) self.label1.setText(“进程数”) self.label1.move(10,0)#col,row self.textbox=QLineEdit(self) self.textbox.move(100,0) self.label3=QLabel(self) self.label3.setText(“进程名称”) self.label3.move(10100) self.label4=QLabel(self) self.label4.setText(“突发时间”) 自我标签4.移动(120100) self.label5=QLabel(self) self.label5.setText(“到达时间”) self.label5.move(200100) self.names=QLineEdit(self) self.names.move(10150) #self.names.resize(100160) self.burst=QLineEdit(self) 自我爆破移动(120150) #self.burst.resize(100160) self.arrival=QLineEdit(self) 自我到达移动(250150) #self.arrival.resize(100160) #self.textEdit=QTextEdit(self) #self.textEdit.move(20250) self.button=QPushButton(“开始”,self) 自动按钮移动(0200) self.button.clicked.connect(self.fcfs) def fcfs(自身): // def main(): app=QApplication(sys.argv) main=MainWindow() main.show() sys.exit(app.exec_()) 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': main()

将父窗口设置为第二个窗口,同时您将两次调用Window2的______;初始化方法。 以下是固定代码:

import sys
from PyQt5 import QtGui
from PyQt5.QtWidgets import (QMainWindow, QApplication, QComboBox,
QDialog, QDialogButtonBox, QFormLayout, QGridLayout, QGroupBox,
QHBoxLayout, QLabel, QLineEdit, QMenu, QMenuBar, QPushButton, QSpinBox,
QTextEdit, QVBoxLayout)
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
import matplotlib.pyplot as plt
import numpy as np
import linked_list

class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        self.setWindowTitle("My Program")
        self.setWindowIcon(QtGui.QIcon("download.jpg"))
        self.setGeometry(50, 50, 500, 300)
        self.home()
        self.show()

    def home(self):

        self.label2 = QLabel(self)
        self.label2.setText("Type of Scheduler")
        self.label2.move(10, 50)

        self.textbox2 = QLineEdit(self)
        self.textbox2.move(100, 50)

        self.button = QPushButton("Go", self)
        self.button.move(0, 200)
        self.button.clicked.connect(self.runcode)

    def runcode(self):
        schedular_type = self.textbox2.text()
        if(schedular_type == "FCFS"):
            self.close()
            fcfs = Window2(self)
            # Do not call __init__ explicitly below
            # fcfs.__init__()


class Window2(QMainWindow):

    def __init__(self,parent=None):
        super().__init__(parent)
        # always try to set a parent
        self.setWindowTitle("My Program")
        self.setWindowIcon(QtGui.QIcon("download.jpg"))
        self.setGeometry(50, 50, 500, 300)
        self.home()
        self.show()

    def home(self):
        self.label1 = QLabel(self)
        self.label1.setText("No of Processes")
        self.label1.move(10, 0)  # col ,row

        self.textbox = QLineEdit(self)
        self.textbox.move(100, 0)

        self.label3 = QLabel(self)
        self.label3.setText("Processess Names")
        self.label3.move(10, 100)

        self.label4 = QLabel(self)
        self.label4.setText("Burst Time")
        self.label4.move(120, 100)

        self.label5 = QLabel(self)
        self.label5.setText("Arrival Time")
        self.label5.move(200, 100)

        self.names = QLineEdit(self)
        self.names.move(10, 150)
        # self.names.resize(100,160)

        self.burst = QLineEdit(self)
        self.burst.move(120, 150)
        # self.burst.resize(100,160)

        self.arrival = QLineEdit(self)
        self.arrival.move(250, 150)
        # self.arrival.resize(100,160)
        # self.textEdit=QTextEdit(self)
        # self.textEdit.move(20,250)

        self.button = QPushButton("Go", self)
        self.button.move(0, 200)
        self.button.clicked.connect(self.fcfs)

    def fcfs(self):
        no_of_process = self.textbox.text()
        process_names = self.names.text()
        burst_time = self.burst.text()
        arrival_time = self.arrival.text()

        names_list = process_names.split()
        burst_list = burst_time.split()
        arrival_list = arrival_time.split()

   # integer conversion

        burst_list = [int(i) for i in burst_list]
        arrival_list = [int(i) for i in arrival_list]
        no_of_process = int(no_of_process)

        ls = LinkedList()
        i = 0

        while i < no_of_process:
            ls.append(names_list[i], burst_list[i], arrival_list[i])
            i = i + 1

        time = arrival_list[0]
        j = 0
        start = []
        end = []
        name = []
        while j < (ls.size()):
            while(time < arrival_list[j]):
                time = time + 1

                start.append(time)
                time = time + burst_list[j]
                end.append(time)
                name.append(names_list[j])
                j = j + 1
        waiting_time = 0
        k = 0
        average_waiting = 0
        while k < (ls.size()):
            waiting_time = waiting_time + \
                end[k] - arrival_list[k] - burst_list[k]
            average_waiting = waiting_time / ls.size()
            k = k + 1

        x = name
        begin = np.array(start)
        end = np.array(end)
        plt.barh(range(len(begin)),  end - begin, left=begin)
        plt.yticks(range(len(begin)), x)
        #plt.text(0.6,1.5,('average waiting is ',average_waiting))
        plt.annotate(("average waiting is", average_waiting), xy=(0.5, 1.49))
        plt.show()


def main():

    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

请改进您的缩进是否有办法包含文件本身?我已经编辑了缩进,但您能告诉我为什么我们要进行这些修改吗?它确实可以在所有窗口中工作,只要您想创建,但请确保设置父窗口(如果可能的话,直接父窗口),即使这样做失败,在您的类(Qt继承)之外创建一个函数,当您从上一个窗口调用该函数时,该函数将启动另一个窗口,这可能会起作用。如果我的答案对你有用,请投赞成票!我制作了第三个窗口,很像第二个窗口,有你编辑的两行代码,但它不起作用,你知道为什么吗?也许我知道为什么,但前提是你给我看代码@女孩看到我更新的答案,请确保在您创建的每个自定义窗口或小部件中都这样做。
def __init__(self,parent=None):
        super().__init__(parent)