You are not logged in.
Hi,
I have decided to learn python as I have heard a lot of people reccomending it as a good simple language, powerful yet easy to pickup etc etc. I have coded in C/C++, pascal & vb previously so am not new to programming as a whole.
I'm liking python so far but am having a basic (but annoying) problem displaying a gtk window using glade, pygtk etc.
I have built a simple interface using glade-3 and it is saved in gtk-builder format and I have the most basic of code to display the window and everytime I try to run it I get segmentation faults. The following error occurs .......
./geany_run_script.sh: line 3: 6391 Segmentation fault python "shoutradio.py"
------------------
(program exited with code: 139)
Press return to continue
Here are my two files.......
shoutradio.py:
#!/usr/bin/env python
import sys
try:
import pygtk
pygtk.require("2.0")
except:
pass
try:
import gtk
import gtk.glade
except:
sys.exit(1)
class ShoutCastMPD:
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("shoutWindow.glade")
self.Window = builder.get_object("window1")
self.AlbumArt = builder.get_object("AlbumArt")
self.TrackSlider = builder.get_object("TrackSlider")
self.VolumeSlider = builder.get_object("VolumeSlider")
self.PlaylistView = builder.get_object("PlaylistView")
self.PlaylistToolbar = builder.get_object("PlaylistToolbar")
self.Tabs = builder.get_object("tabs")
self.ShoutcastView = builder.get_object("ShoutCastView")
self.VolumeSlider = builder.get_object("ShoutcastToolbar")
self.VolumeSlider = builder.get_object("Statusbar")
builder.connect_signals(self)
if __name__ == "__main__":
frontend = ShoutCastMPD()
frontend.Window.show()
gtk.main()
shoutWindow.glade:
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.12"/>
<object class="GtkWindow" id="window1">
<property name="visible">True</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<child>
<object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="AlbumArt">
<property name="width_request">125</property>
<property name="height_request">125</property>
<property name="visible">True</property>
<property name="pixbuf">125x125.png</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">7</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox2">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
<child>
<object class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox3">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
<child>
<object class="GtkLabel" id="label10">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox4">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
<child>
<object class="GtkLabel" id="label11">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox5">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="label13">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
<child>
<object class="GtkHScale" id="TrackSlider">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="no_show_all">True</property>
<property name="adjustment">0 0 100 1 10 10</property>
<property name="digits">0</property>
<property name="draw_value">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="padding">2</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="padding">2</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkVScale" id="VolumeSlider">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="adjustment">0 0 100 1 10 10</property>
<property name="inverted">True</property>
<property name="draw_value">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">5</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="padding">5</property>
</packing>
</child>
<child>
<object class="GtkExpander" id="expander">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkVBox" id="vbox6">
<property name="visible">True</property>
<child>
<object class="GtkHPaned" id="hpaned1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkVBox" id="vbox7">
<property name="visible">True</property>
<child>
<object class="GtkAccelLabel" id="Label1">
<property name="visible">True</property>
<property name="label" translatable="yes">Current Playlist</property>
</object>
<packing>
<property name="expand">False</property>
<property name="padding">7</property>
</packing>
</child>
<child>
<object class="GtkTreeView" id="PlaylistView">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkToolbar" id="PlaylistToolbar">
<property name="visible">True</property>
<child>
<object class="GtkToolButton" id="ClearPlaylistButton">
<property name="visible">True</property>
<property name="stock_id">gtk-cancel</property>
</object>
<packing>
<property name="homogeneous">True</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="resize">False</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<object class="GtkNotebook" id="tabs">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkVBox" id="vbox8">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
</child>
<child>
<object class="GtkLabel" id="label15">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="tab">
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">Library</property>
</object>
<packing>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox9">
<property name="visible">True</property>
<child>
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="label6">
<property name="height_request">30</property>
<property name="visible">True</property>
<property name="label" translatable="yes">Select A ShoutCast Genre</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
</object>
<packing>
<property name="expand">False</property>
<property name="padding">24</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="combobox1">
<property name="visible">True</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
<object class="GtkTreeView" id="ShoutCastView">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkToolbar" id="ShoutcastToolbar">
<property name="visible">True</property>
<child>
<object class="GtkToolButton" id="ShoutPlayButton">
<property name="visible">True</property>
<property name="stock_id">gtk-media-play</property>
</object>
<packing>
<property name="homogeneous">True</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="label" translatable="yes">ShoutCast</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label16">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="label" translatable="yes">Track Information</property>
</object>
<packing>
<property name="position">2</property>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label17">
<property name="visible">True</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="position">3</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="label" translatable="yes">Options</property>
</object>
<packing>
<property name="position">3</property>
<property name="tab_fill">False</property>
</packing>
</child>
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</object>
</child>
<child>
<object class="GtkStatusbar" id="Statusbar">
<property name="visible">True</property>
<property name="spacing">2</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="label_item">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">Extra Features
Click To Expand</property>
<property name="use_markup">True</property>
<property name="use_underline">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
</object>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
If someone could help me out here it would be most appreciated, its probably some really silly thing i've done somewhere along the line in glade-3 or something but I can't figure out what and it's starting to bug me
Cheers in advance.
Offline
OK so I solved this problem the other day, should of posted back here earlier I suppose but seeing as no-one has replied supppose it aint that important.....
The item causing the segfaults was the label on the expander. The moment I took it out all was well again, does anybody else experience this when using glade-3 and pygtk?
The same thing happens if you put a frame into the gui design, the frame gets a label by default, but python segfaults as soon as it loads the glade xml file.
Does anybody else experience this, is this a known bug in python / pygtk / glade, is it something I could bug report.
Other than these minor niggles with gui design pythons great, only been using it for a few days and allready have a pretty functional MPD client (cue groan from community and .... Oh no, not another one )
Offline