Pythonia amatöörille

Aloin sitten muutama päivä aikaa tutustumaan pythoniin koska käsitin sen olevan koht yksinkertainen tapa tehdä GUI:ta ja eipä ollut muutenkaan mitään koodauskokemusta, noh saimpas jo ensimmäiset "koodaukset" tehtyä :)
Mielenkiintoinen kieli, mutta suomalaista dokumentaatiota on aikalti niukasti, engelska välillä haroo inan vastaan. Uudenkaupungin kirjastossa oli tasan yksi kirja joka maintsi Pythonin nimeltään: Java, Prolog, Python: Tehokas näkökulma ohjelmointiin, siinä oli sitten puolet kirjaa javaa ja 2 (kaksi) lukua pythonille, takaosassa oli vielä Ruby:llekkin enemmän tekstiä vaikkei sitä tuossa kannessa edes mainita :)
Niin ja kumminkin takasin asiaan, tuli ongelmaksi tuossa minun ns. ohjelmassani(jonka tein siis sekä tk:lla että wxpythonilla), notta ne tilttaa. kyseessähän on ihan yksinkertainen käynnistin FST ja VSTHost ohjelmille jotka ovat linuxin VST-pluginin hosteja, googlatkaa Steinberg jos ei sano mitään. Molemmat versiot jää jumiin kun vst käynnistyy ja alkaa sitten taas toimia kun sammutan sen.

os.system(vstprog " " vstdir selectedvst)
tuollaisella hienolla komennolla käynnistän ja pistän tuon koodinkin tähän vielä pian.

Ja toinen ongelma tulee tuossa wxPythonin listboxissa mistä valitsen sen VST-pluginin, niin miten siihen saa näkymään vain DLL tiedostot?
minulla menee tuon haku jota kuinkin näin

vstdir = "/home/maike/.wine/drive_c/VSTPlugins/"
input = file("test.txt", "w")

for name in os.listdir(vstdir):
input.write(name "\n")
del input

ja sitten toisessa kohtaa notta.

self.vstlist = wx.ListBox(self, -1, choices=[])
output = file("test.txt", "r")
for line in output:
self.vstlist.Append(line)
6658
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

wxPython Versio.

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# generated by wxGlade 0.4cvs on Fri Nov 10 02:41:06 2006

import wx
import os

vstdir = "/home/maike/.wine/drive_c/VSTPlugins/"
input = file("test.txt", "w")

for name in os.listdir(vstdir):
input.write(name "\n")
del input

class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.fst = wx.RadioButton(self, -1, "FST")
self.vsthost = wx.RadioButton(self, -1, "VSTHost")
self.launch = wx.Button(self, -1, "Launch")
self.vstlist = wx.ListBox(self, -1, choices=[])
output = file("test.txt", "r")
for line in output:
self.vstlist.Append(line)


self.__set_properties()
self.__do_layout()

self.Bind(wx.EVT_RADIOBUTTON, self.vstset("fst"), self.fst)
self.Bind(wx.EVT_RADIOBUTTON, self.vstset("vsthost"), self.vsthost)
self.Bind(wx.EVT_BUTTON, self.start, self.launch)
self.Bind(wx.EVT_LISTBOX_DCLICK, self.sel, self.vstlist)
self.Bind(wx.EVT_LISTBOX, self.choose, self.vstlist)
# end wxGlade

def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle("VST Launch Kit")
# end wxGlade

def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_1.Add(self.fst, 0, wx.ADJUST_MINSIZE, 0)
sizer_1.Add(self.vsthost, 0, wx.ADJUST_MINSIZE, 0)
sizer_1.Add(self.launch, 0, wx.ADJUST_MINSIZE, 3)
sizer_1.Add(self.vstlist, 0, wx.ADJUST_MINSIZE, 0)
self.SetAutoLayout(True)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
sizer_1.SetSizeHints(self)
self.Layout()
self.Centre()
# end wxGlade

def vstset(self, event): # wxGlade: MyFrame.
global vstprog
vstprog = event

def start(self, event): # wxGlade: MyFrame.
os.system(vstprog " " vstdir selectedvst)

def choose(self, event): # wxGlade: MyFrame.
global selectedvst
n = self.vstlist.GetSelection()
selectedvst = self.vstlist.GetString(n)


def sel(self, event): # wxGlade: MyFrame.
global selectedvst
n = self.vstlist.GetSelection()
selectedvst = self.vstlist.GetString(n)
os.system(vstprog " " vstdir selectedvst)
# end of class MyFrame


class MyApp(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
frame = MyFrame(None, -1, "")
self.SetTopWindow(frame)
frame.Show()
return 1

# end of class MyApp

if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()

Äänestä

ja tässä tk versio

from Tkinter import *
import tkMessageBox
import os
import tkFileDialog

vstdir = '/home/maike/.wine/drive_c/VSTPlugins'
vst = 'fst'
vstlist = os.listdir("/home/maike/.wine/drive_c/VSTPlugins/")

def setvst(x):
global vst
vst = x

def launch():
b = tkFileDialog.askopenfilename(initialdir=vstdir)
os.system(vst " " b)


root = Tk()

v = IntVar()
Radiobutton(root, text="FST", variable=v, value=1, command=setvst('fst')).pack(anchor=W)
Radiobutton(root, text="VSTHost", variable=v, value=2, command=setvst('vsthost')).pack(anchor=W)

v.set("1")

b = Button(root, text="Launch", command=launch)
b.pack(fill=BOTH, expand=1)

mainloop()

Äänestä

Ongelma lienee se, että "os.system" komennosta palataan vasta sitten kun se on suoritettu, (eli tapauksessasi ohjelma odottaa VST:n sammumista). Windows:ssa on "start" käsky jolla voi avata erillisen ikkunan/prosessin ohjelman suorittamista varten, jolloin varsinaista jumiutumista ei tapahdu, (esim. os.system("start c:\windows\notepad.exe")). En tiedä mikä Linuksissa ajaa vastaavaa asiaa, (oliko siinä joku '&' -merkki joka piti lisätä rivin perään, tms).

Äänestä
  • &-merkki toimii. Siis esim :

    import os

    os.system("xterm &")
    os.system("gedit &")

    Käynnistää xterm- ja gedit-ohjelmat.

    Äänestä

  • 5v tai jotain..iha fiksuu juttuu taas...kaikkia ei ehkä ees ns."oikea" koodaus kiinnostakkaan vaan haluu vaan vähän leikkiä vai luuletko että oikeesti meinaan jotain tuon tyylistä "ohjelmaa" julkaistakkin ja väsätä siihen jotain suuria?

    Äänestä

Kommentoi aloitusta


Wunjo kirjoitti:

Aloin sitten muutama päivä aikaa tutustumaan pythoniin koska käsitin sen olevan koht yksinkertainen tapa tehdä GUI:ta ja eipä ollut muutenkaan mitään koodauskokemusta, noh saimpas jo ensimmäiset "koodaukset" tehtyä :)
Mielenkiintoinen kieli, mutta suomalaista dokumentaatiota on aikalti niukasti, engelska välillä haroo inan vastaan. Uudenkaupungin kirjastossa oli tasan yksi kirja joka maintsi Pythonin nimeltään: Java, Prolog, Python: Tehokas näkökulma ohjelmointiin, siinä oli sitten puolet kirjaa javaa ja 2 (kaksi) lukua pythonille, takaosassa oli vielä Ruby:llekkin enemmän tekstiä vaikkei sitä tuossa kannessa edes mainita :)
Niin ja kumminkin takasin asiaan, tuli ongelmaksi tuossa minun ns. ohjelmassani(jonka tein siis sekä tk:lla että wxpythonilla), notta ne tilttaa. kyseessähän on ihan yksinkertainen käynnistin FST ja VSTHost ohjelmille jotka ovat linuxin VST-pluginin hosteja, googlatkaa Steinberg jos ei sano mitään. Molemmat versiot jää jumiin kun vst käynnistyy ja alkaa sitten taas toimia kun sammutan sen.

os.system(vstprog " " vstdir selectedvst)
tuollaisella hienolla komennolla käynnistän ja pistän tuon koodinkin tähän vielä pian.

Ja toinen ongelma tulee tuossa wxPythonin listboxissa mistä valitsen sen VST-pluginin, niin miten siihen saa näkymään vain DLL tiedostot?
minulla menee tuon haku jota kuinkin näin

vstdir = "/home/maike/.wine/drive_c/VSTPlugins/"
input = file("test.txt", "w")

for name in os.listdir(vstdir):
input.write(name "\n")
del input

ja sitten toisessa kohtaa notta.

self.vstlist = wx.ListBox(self, -1, choices=[])
output = file("test.txt", "r")
for line in output:
self.vstlist.Append(line)

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu