Radiobutton funktioren nicht

Fragen zu Tkinter.
Antworten
leonards
User
Beiträge: 18
Registriert: Samstag 9. Juni 2012, 10:59

Hallo,
ich habe ein Programm geschrieben, das mir die aktuellen Charts in einer Liste auflistet. Da es verschiedene Kategorien gibt, habe ich Radiobuttons gemacht, um die Kategorie auszuwählen. Es wird aber immer die Kategorie "German Top 100 Single Charts" verwendet, egal was ich angebe. Der Code des Programms ist:

Code: Alles auswählen

#charts.pyw
from Tkinter import *
from httplib import *
import webbrowser
class Charts:
  def __init__(self):
    self.tk = Tk()
    self.tk.title('Aktuelle Charts')
    Button(self.tk,text='Kategorie von charts.to auswählen und Liste laden',command=self.auswahl).grid(row=1,column=1,columnspan=2)
    self.suchen = Entry(self.tk)
    self.suchen.grid(row=1,column=3)
    Button(self.tk,text='bei charts.to suchen',command=self.oeffnen).grid(row=1,column=4)
    self.tk.mainloop()

  def auswahl(self):
    self.root = Tk()
    self.root.title('Typauswahl')
    self.thema = StringVar()
    r = Radiobutton(self.root,text='German Top 100 Single Charts',variable=self.thema,value='german-top-100-single-charts')
    r.grid(row=1,column=1)
    r.select()
    Radiobutton(self.root,text='German Top 100 Album Charts',variable=self.thema,value='german-top-100-album-charts').grid(row=1,column=2)
    Radiobutton(self.root,text='German Top 50 Dance Charts',variable=self.thema,value='german-top-100-dance-charts').grid(row=1,column=3)
    Radiobutton(self.root,text='German Top 30 Schlager Charts',variable=self.thema,value='german-top-30-schlager').grid(row=1,column=4)
    Radiobutton(self.root,text='German Top 40 Black Charts',variable=self.thema,value='german-top-40-black-charts').grid(row=1,column=5)
    Radiobutton(self.root,text='US Top 40 Single Charts',variable=self.thema,value='us-top-40-single-charts').grid(row=2,column=1)
    Radiobutton(self.root,text='UK Top 40 Single Charts',variable=self.thema,value='uk-top-40-single-charts').grid(row=2,column=2)
    Radiobutton(self.root,text='German Top 100 Single Charts 2011',variable=self.thema,value='german-top-100-single-charts-2011').grid(row=2,column=3)
    Radiobutton(self.root,text='German Top 100 Single Charts 2012',variable=self.thema,value='german-top-100-single-charts-2012').grid(row=2,column=4)
    Button(self.root,text='Charts laden',command=self.charts).grid(row=3,column=1,columnspan=5)
    self.root.mainloop()

  def charts(self):
    thema = self.thema.get()
    self.root.destroy()
    try:
      v = HTTPConnection('charts.to')
      v.request('GET','/'+thema)
      a = v.getresponse()
      html = a.read()
    except: pass
    interpreten = []
    lieder = []
    bestandteile = html.split('<span class="f12 blue bold">')
    for satz in bestandteile:
      name = satz.split('</span>')[0]
      interpreten.append(name)
    del interpreten[0]
    bestandteile = html.split('</span> - <span class="f12 bold">')
    del bestandteile[0]
    for satz in bestandteile:
      name = satz.split('</span><div class="clear half"></div>')[0]
      lieder.append(name)
    nummer = 0
    row = 2
    column = 1
    platz = 1
    farbe = 'blue'
    for lied in lieder:
      Label(self.tk,text='Platz '+str(platz)+': '+lied+' von '+interpreten[platz-1],bg=farbe,font=('Arial',8)).grid(row=row,column=column)
      row += 1
      platz += 1
      if row == 35:
        row = 2
        column += 1
      if farbe == 'blue':
        farbe = 'red'
      elif farbe == 'red':
        farbe = 'orange'
      elif farbe == 'orange':
        farbe = 'green'
      elif farbe == 'green':
        farbe = 'blue'

  def oeffnen(self):
    lied = self.suchen.get()
    url = 'http://chart.to?key='+lied
    webbrowser.open(url,2)



Charts()
Gruß Leonard :)
BlackJack

@leonards: Ohne jetzt das Programm weiter betrachtet zu haben: Es darf immer nur ein Exemplar von `Tk` geben. Das ist *das* *Haupt*fenster. Wenn man davon mehrere erstellt kann es zu ganz komischem Verhalten der GUI kommen. Wenn man zusätzlich zum Hauptfenster weitere Fenster benötigt, dann erstellt man die mit `Toplevel`.
leonards
User
Beiträge: 18
Registriert: Samstag 9. Juni 2012, 10:59

Wie geht das mit den Topleveln? Die kenne ich nicht.
Gruß Leonard :)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

"python" "tk" und "Toplevel" in die Suchmaschine deiner Wahl eingeben sollte keine Hindernis darstellen ;-)
Das Leben ist wie ein Tennisball.
leonards
User
Beiträge: 18
Registriert: Samstag 9. Juni 2012, 10:59

Hab es jetzt hinbekommen, das ist jetzt mit Frames in einem Fenster, dann kann ich die auch einfach und schnell wegmachen.
Gruß Leonard :)
Antworten