python2 및 GTKBuilder를 사용하여 GUI 프로그래밍을 배우려고하는데 코드를 실행할 때 분할 오류가 발생합니다. 이것이,파이썬 스크립트/GTKBuilder 앱을 실행할 때 분할 오류가 발생합니까?
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="mainWindow">
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="margin_left">146</property>
<property name="margin_right">276</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entryName">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_bottom">4</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="invisible_char">●</property>
<property name="placeholder_text">Please enter your name here...</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttonWriteNameToFile">
<property name="label" translatable="yes">button</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<signal name="clicked" handler="buttonWriteNameToFile_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</interface>
내 파이썬 코드, this question에 따라 :
:python2
으로 파일을 실행
#!/usr/bin/env python
import gtk
class NameApp:
def __init__(self):
filename = "project.glade"
builder = gtk.Builder()
builder.add_from_file(filename)
builder.connect_signals(self)
builder.get_object("mainWindow").show_all()
def buttonWriteNameToFile_clicked(self, widget):
print("File write code...")
if __name__ == "__main__":
app = NameApp()
gtk.main()
이 오류를 얻을 이것은 GTKBuilder 파일로 습지에서 만든 내 파일입니다
name.py:9: Warning: cannot create instance of abstract (non-instantiatable) type `GtkBox'
builder.add_from_file(filename)
./geany_run_script.sh: line 5: 14897 Segmentation fault python2 "name.py"
나는이 예제를 가능한 한 가깝게 따라 왔으며 GTKBuilder 파일 외부에는 차이점이 없다고 생각했습니다. 그러나 링크 된 질문의 예제는 내 컴퓨터에서 성공적으로 실행됩니다. 관련성이 있는지는 모르지만 저는 Arch Linux x86_64를 사용하고 있습니다.
'self.builder.get_object ("entryName"). get_text()'throws 이후로 버튼 안의 텍스트 입력 필드의 내용을 참조하는 방법을 알아 내는데 어려움이 있지만 문제가 해결되었습니다. '빌더'가 '자기'에서 발견되지 않는다는 오류. 나는 그것이 파이썬/gtk의 버전과 관련이 있는지 여부는 모르겠다. –