2013-08-25 3 views
3

Я делаю программу для моей малины pi в python и pyqt4. Теперь я запускаю программу на моей малине, и она дает ошибки, и она не показывает кнопки, которые я сделал. Я разработал в qtdesinger, он показывает окно, но ничего на нем.Pyqt4 X ошибки при запуске приложения

Это ошибка у меня есть:

X Error: BadAccess (attempt to access private resource denied) 10 
    Extension: 129 (MIT-SHM) 
    Minor opcode: 1 (X_ShmAttach) 
    Resource id: 0x2800001 
X Error: BadShmSeg (invalid shared segment parameter) 128 
    Extension: 129 (MIT-SHM) 
    Minor opcode: 5 (X_ShmCreatePixmap) 
    Resource id: 0x280000a 
X Error: BadDrawable (invalid Pixmap or Window parameter) 9 
    Major opcode: 62 (X_CopyArea) 
    Resource id: 0x280000b 
X Error: BadDrawable (invalid Pixmap or Window parameter) 9 
    Major opcode: 62 (X_CopyArea) 
    Resource id: 0x280000b 
X Error: BadDrawable (invalid Pixmap or Window parameter) 9 
    Major opcode: 62 (X_CopyArea) 
    Resource id: 0x280000b 

Это мой питон код из QtDesigner:

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    _fromUtf8 = lambda s: s 

class Ui_Form(object): 
    def setupUi(self, Form): 
     Form.setObjectName(_fromUtf8("Form")) 
     Form.resize(480, 640) 
     self.pushButton = QtGui.QPushButton(Form) 
     self.pushButton.setGeometry(QtCore.QRect(120, 140, 83, 24)) 
     self.pushButton.setObjectName(_fromUtf8("pushButton")) 
     self.toolButton = QtGui.QToolButton(Form) 
     self.toolButton.setGeometry(QtCore.QRect(350, 250, 27, 20)) 
     self.toolButton.setObjectName(_fromUtf8("toolButton")) 
     self.buttonBox = QtGui.QDialogButtonBox(Form) 
     self.buttonBox.setGeometry(QtCore.QRect(150, 280, 156, 24)) 
     self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDia$ 
     self.buttonBox.setObjectName(_fromUtf8("buttonBox")) 
     self.commandLinkButton = QtGui.QCommandLinkButton(Form) 
     self.commandLinkButton.setGeometry(QtCore.QRect(160, 230, 168, 41)) 
     self.commandLinkButton.setObjectName(_fromUtf8("commandLinkButton")) 
     self.checkBox = QtGui.QCheckBox(Form) 
     self.checkBox.setGeometry(QtCore.QRect(130, 380, 84, 19)) 
     self.checkBox.setObjectName(_fromUtf8("checkBox")) 
     self.toolButton_2 = QtGui.QToolButton(Form) 
     self.toolButton_2.setGeometry(QtCore.QRect(160, 470, 27, 20)) 
     self.toolButton_2.setObjectName(_fromUtf8("toolButton_2")) 
     self.listView = QtGui.QListView(Form) 
     self.listView.setGeometry(QtCore.QRect(60, 460, 256, 192)) 
     self.listView.setObjectName(_fromUtf8("listView")) 

     self.retranslateUi(Form) 
     QtCore.QMetaObject.connectSlotsByName(Form) 

    def retranslateUi(self, Form): 
     Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtG$ 
     self.pushButton.setText(QtGui.QApplication.translate("Form", "Lamp", None,$ 
     self.toolButton.setText(QtGui.QApplication.translate("Form", "...", None, $ 
     self.commandLinkButton.setText(QtGui.QApplication.translate("Form", "Comma$ 
     self.checkBox.setText(QtGui.QApplication.translate("Form", "CheckBox", Non$ 
     self.toolButton_2.setText(QtGui.QApplication.translate("Form", "...", None$ 

и этот мой файл, чтобы открыть окно: импорт SYS из PyQt4 импорта QtCore , QtGui от test import Ui_Widget

class StartQT4(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.ui = Ui_Widget() 
     self.ui.setupUi(self) 


if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    myapp = StartQT4() 
    myapp.show() 
    sys.exit(app.exec_()) 

У меня есть решение для меня? Я ошибся в Google, но не нашел ответов на мои проблемы.

Спасибо ...

+0

Возможно ли, что проблема настоящая VNC? Я хочу запустить программу в сеанс vnc. В интернете говорят, что проблема может быть реальной vnc? Возможно ли это? – Stijnb

ответ

1

У меня такая же проблема с приложением питона.

я нашел следующее:

  1. с помощью VNC, войдите в Gnome рабочий стол, как я и запустить приложение, как и я, работает на 100%
  2. при входе в рабочий стол, как я, запустить Xhost +
  3. Судо переключение пользователю другого пользователя и приложение не удается
  4. как новый пользователь, экспорт DISPLAY = имя хост:
  5. Запустите приложение, и теперь он работает на 100%

Это начало происходить с обновлением python, которое включало новые версии pyqt и libqt.

В качестве теста на стороне, я eable бегать «глазами» и «светлячок» отлично (без экспорта переменной дисплей)

Проблема появляется, чтобы сидеть, когда PyQt atempts чтобы «заполнить» окна X11 при использовании «/ unix» MIT-MAGIC-COOKIE-1 ..... те же подпрограммы работают при использовании «hostname: instance» MIT-MAGIC-COOKIE-1

1

Я нашел аналогичную проблему с Unetbootin. Он требует прав root, и когда X-сервер запускается от пользователя, например. используя команду startx, она дает ту же ошибку.

Решение должно использовать диспетчер дисплея, например, lxdm, gdm и т. Д.

Я полагаю, что QT не может поднять разрешение на доступ к некоторой общей памяти, поскольку X работает с пользователями привилегиями. И с менеджером рабочего стола он работает с привилегиями root.

Смежные вопросы