问题描述
我正在尝试学习Python的GUI库PyQT5,但无法理解主类“ MainWindow”的运行情况。如果我继承QWidget(或QDialog),则效果很好,但无法设置状态栏。如果继承QMainWindow,则可以设置状态栏,但会弹出一个空白窗口。这是一个片段:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import pandas as pd
import sys
class MainWindow(QDialog): #QMainWindow
def __init__(self):
super(MainWindow,self).__init__()#QMainWindow.__init__(self)
self.setWindowTitle("pySAGE Bruno Antonieto")
# Window dimensions
self.setFixedSize(1080,620)
# # Commented Status Bar I wish to implement
# self.status = self.statusBar()
# self.status.showMessage("pySAGE Data Visualization 0.1 | Bruno Antonieto - Aprot Engenharia Eletrica")
self.createMenu()
self.createTable()
mainLayout = QVBoxLayout()
mainLayout.setMenuBar(self.menuBar)
mainLayout.addWidget(self.groupBox)
self.setLayout(mainLayout)
def createMenu(self):
self.menuBar = QMenuBar()
self.fileMenu = QMenu("&File",self)
self.menuBar.addMenu(self.fileMenu)
def createTable(self):
self.groupBox = QGroupBox('Tabela')
layout = QGridLayout()
# Some table i'm using,works properly on QDialog
# and show's nothing with QMainWindow
model = pandasModel(dir_data)
view = QTableView()
view.setModel(model)
view.show()
layout.addWidget(view)
self.groupBox.setLayout(layout)
class pandasModel(QAbstractTableModel):
def __init__(self,data):
QAbstractTableModel.__init__(self)
self._data = data
def rowCount(self,parent=None):
return self._data.shape[0]
def columnCount(self,parnet=None):
return self._data.shape[1]
def data(self,index,role=Qt.DisplayRole):
if index.isValid():
if role == Qt.DisplayRole:
return str(self._data.iloc[index.row(),index.column()])
return None
def headerData(self,col,orientation,role):
if orientation == Qt.Horizontal and role == Qt.DisplayRole:
return self._data.columns[col]
return None
if __name__ == '__main__':
app = QApplication([])
app.setStyle('Fusion')
main_window = MainWindow()
main_window.show()
app.exec_()
为什么QMainWindow显示空白页? 谢谢你。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)