我知道这个问题被问了很多次,但每次我看到不同的情况。在
第一个问题:
我无法打开具有网格布局的新窗口(Window2)。在
我试图在pyqt中打开一个新窗口(Window2),这个窗口(Window2)有网格布局。在
为了使网格布局工作,Window2有父级(QWidget)
为了使它打开,2有另一个父窗口(QMainWindow)
但这两个父母的冲突意味着:
如果只有QWidget作为父级,Window2根本就不会打开
只有QMainWindow作为父级时,Window2将打开,但没有网格布局
当两者都作为父级时,Window2将打开,但没有网格布局
我不知道如何在保持网格布局的同时正确打开窗口
编辑:我发现了关于多重继承的问题,但我不明白它是如何工作的Multiple inheritance
第二个问题:
我有一个全局变量numberofholes,它的值在类“Window”中更改,然后在“Window2”类中使用
所以这个变量在类“Window”中被正确地改变了,但是要么没有被定义,要么它的值在类“Window2”中没有被改变 那么,在“Window2”类中怎么没有定义全局值呢
部分代码:
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
#######global variables#####################################
global memorysize
global numberofholes
####################################################################
class Window(QWidget):
def __init__(self,parent=None):
super(Window,self).__init__(parent)
self.setWindowTitle("Memory")
self.setGeometry(50,50,500,300)
self.home()
def home(self):
self.grid=QGridLayout()
self.setLayout(self.grid)
self.memory=QLabel(self)
self.memory.setText("Total Memory size")
self.grid.addWidget(self.memory,0,0)
self.memoryinput=QLineEdit(self)
self.grid.addWidget(self.memoryinput,0,20)
self.holes=QLabel(self)
self.holes.setText("Number of holes")
self.grid.addWidget(self.holes,5,0)
self.inputholes=QLineEdit(self)
self.grid.addWidget(self.inputholes,5,20)
self.submit=QPushButton("OK",self)
self.grid.addWidget(self.submit,10,0)
#################Action on clicking submit###########################
self.submit.clicked.connect(self.getholes)
def getholes(self):
memorysize=float(self.memoryinput.text())
numberofholes=int(self.inputholes.text())
self.close()
self.window2=Window2(self)
##############second window for holes input##########################
class Window2(QMainWindow,QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle("Memory")
self.setGeometry(50,50,500,300)
self.home()
self.show()
def home(self):
self.grid=QGridLayout()
self.setLayout(self.grid)
#print(numberofholes)
for n in range (numberofholes):
self.start_add=QLabel(self)
self.start_add.setText("Starting Address")
self.inputstart=QLineEdit(self)
self.size=QLabel(self)
self.size.setText("Size")
self.inputsize=QLineEdit(self)
self.grid.addWidget(self.start_add,2*n+1,0)
self.grid.addWidget(self.inputstart,2*n+1,1)
self.grid.addWidget(self.size,2*n+1,2)
self.grid.addWidget(self.inputsize,2*n+1,3)
def main():
app = QApplication(sys.argv)
main = Window()
main.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
试试看:
相关问题 更多 >
编程相关推荐