python - 添加 QTextEdit 小部件作为中央小部件使主窗口不弹出,并且 showMaximize 导致计算机崩溃?

标签 python ubuntu pyqt

我有以下骨架代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QMainWindow, QTextEdit
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import Qt


class Editor(QMainWindow):

    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.initUI()

    # --------------------------------------

    def initMenubar(self):

      menubar = self.menuBar()

      fileMenuBtn = menubar.addMenu("File")
      editMenuBtn = menubar.addMenu("Edit")
      viewMenuBtn = menubar.addMenu("View")

    # --------------------------------------    
    def initToolbars(self):

      self.toolbar = self.addToolBar("Options")
      # Makes the next toolbar appear underneath this one
      self.addToolBarBreak()
      self.formatbar = self.addToolBar("Format")        

    # --------------------------------------        
    def initUI(self):
        QToolTip.setFont(QFont('Monospace', 10))

        self.setToolTip('<b>Proofor</b> main window')

        #self.text = QTextEdit(self)
        #self.setCentralWidget(self.text)


        # Initialize a statusbar for the window
        self.statusbar = self.statusBar()

        self.initToolbars()
        self.initMenubar()

        self.setWindowTitle('Proofor - proof editor')
        #self.setWindowIcon(QIcon('dots.png'))

        #self.setGeometry(100, 100, 500, 500)

# ================================================

def main():

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

if __name__ == '__main__':
    main()

如果按原样运行此代码( python editor.py ),则一切正常。但是,如果我取消注释添加 QTextEdit 的行小部件,位于 initUI ,我收到以下警告:
(python:1949): Gtk-CRITICAL **: IA__gtk_widget_style_get: assertion 'GTK_IS_WIDGET (widget)' failed
QWidget::setMinimumSize: (/Editor) The largest allowed size is (16777215,16777215)

否则会弹出的窗口不会弹出,但我仍然可以关闭应用程序。相反,如果在 main我有 main.showMaximized()而不是 main.show() ,我导致我的电脑崩溃。如果我没有 QTextEdit,则不会发生这种情况小部件设置为中央小部件,否则会出现一个正常的最大化窗口。

关于发生了什么的任何想法?

为后代编辑:问题发生在我的 Anaconda Python 发行版中,我安装了与 native pyqt4 冲突的 pyqt5。

最佳答案

在 python 3.4、pyqt5、ubuntu 14.04 下,您的代码运行良好。
这似乎是您安装的默认样式的问题

尝试通过运行代码来更改样式,例如

python editor.py -style windows

Qt-Docs QStyle

您可以通过以下方式找到可用的样式
print(QStyleFactory.keys())

从 QtWidgets 导入 QStyleFactory 后

关于python - 添加 QTextEdit 小部件作为中央小部件使主窗口不弹出,并且 showMaximize 导致计算机崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244849/

相关文章:

python - 如何使 TensorFlow RNN 训练更加稳健?

python - apache2 使用 python2.7 & 我想使用 python3.4

ubuntu - 准备 VPS 以使用 Kubespray 安装 Kubernetes

python - 适用于 pyside2/pyqt5 python 用户的 Qt Quick Creator (QML)

python - 在另一个 Pyside/Pyqt 屏幕上调用函数

python,如何将 pandas 系列转换为 pandas DataFrame?

python - 如何从一个 wx 笔记本页面获取变量到另一个 wx 笔记本页面?

python - 按顺序插入嵌套列表

linux - GNU screen 硬状态行中的系统加载

python - PyQt:QGraphicsView 中的鼠标事件