Found 8 entries, viewing 1 through 5.
Building Cocoa GUIs in Python with PyObjC, Part Four
Creating an Open Dialog
Our controller doesn't really do anything at this point. We'll begin by adding an open dialog for the user. This will require us to really delve into the Objective C bridge provided by PyObjC. We'll start by reading some documentation that ships with Xcode.
Let's launch the local documentation browser in Xcode. Under "Help" click "Documentation". In the newly opened documentation browser select the "Mac OS X 10.5" documentation set and search for NSOpenPanel. This is the class we'll be working with to create our open dialog. Have a look through the documentation, then let's code.
First we do some basic stuff, creating the object and setting some permissions. A modified open method on our controller.py looks like this:
filetypes = ('mp3', 'ogg', 'mp4', 'flac', 'm4a', 'm4p')
@IBAction
def open_(self, sender):
panel = NSOpenPanel.openPanel()
panel.setCanChooseDirectories_(NO)
panel ...
Building Cocoa GUIs in Python with PyObjC, Part Three
Writing A Python Controller
First let's add your new controller into the GUI. Add an object from "Objects & Controllers" into your GUI. Now click on it and bring up the "Identity" tab in the inspector. The first drop-down lets you select a class, find "controller" and pick it.
Now Open up your newly created controller.py with your favorite text editor, and we'll begin.
#
# controller.py
# QuickTag
#
# Created by Scott Paul Robertson on 6/11/08.
# Copyright (c) 2008 __MyCompanyName__. All rights reserved.
#
from objc import YES, NO, IBAction, IBOutlet
from Foundation import *
from AppKit import *
class controller(NSWindowController):
pass
There are two parts we will be adding, the Outlets (variables) and Actions (methods). first lets add a few outlets to the class controller.
name = IBOutlet()
artist = IBOutlet()
albumArtist = IBOutlet()
album = IBOutlet()
...
These class variables can now be connected to various fields in your GUI. In Interface Builder ...
Building Cocoa GUIs in Python with PyObjC, Part Two
Starting A Cocoa-Python Application
Getting started is easy. First, install the Developer Tools if you haven't yet. Now launch Xcode and start a new project. Select "Cocoa-Python Application". You'll be presented with the following window.
Before we begin, go ahead and double-click on "MainMenu.xib (English)" and put together your interface. We're going to make a tag editor, so give yourself a window with:
- Text fields for things like: Name, Artist, Album, Track Number, Genre.
- Buttons for two actions: Revert and Save & Close.
- Menu items for: Open, Save, Revert to Saved, Close. Keep the edit menu, window menu, and help.
If you prefer, use mine. It already as all the needed connections made, the code is all that is missing.
Now we will start the controller. Create a new file for the project of the type "Python NSWindowController subclass". Name it something like "controller.py".
To tell ...
Building Cocoa GUIs in Python with PyObjC, Part One
Introduction
Building GUIs for Apple OS X traditionally meant you would code in Objective C. To overcome this issue people have made programming bridges to allow development in other languages. PyObjC is the project that enables Python programmers to take advantage of Cocoa, Apple's development environment. I recently began learning how to use PyObjC, and how to make (almost) pure Python GUI applications.
PyObjC isn't new, it has been around for a while, and there is actually a pretty good tutorial for wiring an interface up with Python. Leopard (10.5) ships with Python 2.5 and PyObjC 2.0, meaning there is nothing we need to install. Additionally Apple has also shipped support for Python in Xcode. This makes certain things much easier.
The current tutorial directs a user to build an interface, and then take the generated Nib file* and run a script that generates the ...
Quicklook on the Command-Line
(via) Okay, now I can lauch Leopard's Quicklook from the command-line. That's really quite handy for pdf, doc, and other similar files.

