• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Kann mich jemand zu TCL/TK helfen?

revealed

Guru
Also folgendes:

Ich hab selber ein bisschen Probleme mit meiner TV Karte. Diese jetzt allerdings soweit gelöst, dass ich mittels

1. ivtv-tune und 2. xine

1. Senderwechseln kann
und
2. Fernsehen kann

Jetzt hab ich mir gedacht. Ich könnte mir einmal Arbeit machen und mit TCL/TK ein Fenster basteln das auf Knopfdruck Xine startet und auf Knopfdruck auf einen weiteren button dann eben den Sender über ivtv-tune herspoolt.

Das ginge auch. Ich hab das schon versucht. Nur weiss ich jetzt nicht, ob ich soetwas überhaupt dürfte.

Also darf mann soetwas "programmieren"? An sich verändert es eigendlich nichts am Code - glaube ich zumindest.

Wobei ich halt prinzipiell Parameter für die Befehle spezifizieren muss und die Programm halt mittels "exec" im Terminal gestartet würden.

Darf man sich soetwas einfach so machen, und falls es ausgeklügelt genug währe auch einfach so für andere zur Verfügung stellen? Also das ist alles noch sehr theoretisch. Aber der "dürfen?" Faktor hält mich eigendlich am krassesten auf.

das ganze würde via "wish" gestartet und dann eben im Terminal automatisch ausgeführt...

Gruss

R
 

abgdf

Guru
Warum solltest Du das nicht dürfen ?

Soweit ich sehe, willst Du doch nicht in Code von Closed-Source-Software eingreifen.
Bei GPL/LGPL-Code ist Verändern jedenfalls für nichtkommerzielle Zwecke sogar erwünscht !

Ganz einfache "GUIs" kannst Du auch mit Xdialog erzeugen:

Code:
Xdialog --title "Hi" --screen-center --msgbox 'Hallo !' 0 0

Viele Grüße
 
OP
revealed

revealed

Guru
also ich hab das eher so gedacht:
Code:
#!/bin/sh
#\
exec wish $ 0
#die rahmen#
frame .rahmentop -borderwidth 1 -relief raised
frame .rahmen1 -borderwidth 1 -relief raised
#..etc
pack .rahmentop -side top -fill x
pack .rahmen1 -side top -fill x
#..etc
###Die Knöpfe:###
button .beenden -width "28" -text "Kanalwechsler Beenden" -foreground #bb3737 -command exit
pack .beenden -fill x -expand false -side left
###Button für Xine start aus dem Terminal zur Wiedergabe###
button .xine  -width "28" -text "XINE" -foreground #30a453 -command   { exec cat /dev/video0 | xine -V XShm stdin://mpeg2  & }
pack .xine -fill x -expand false -side left -in .rahmentop
###Knopf für Kanal "Kanalname" in Farbe mit IVTV-TUNE im Terminal ausführen und Positionierung in Rahmen###
button .ard  -width "12" -text "1. ARD" -foreground #3366ff -command { exec ivtv-tune -t europe-west -c E5 & }
pack .ard -fill x -expand false -side left -in .rahmen1
###knöpfe und Rahmen je nach Bedarf erweitern...

So wie es bis jetzt eben ist, braucht man eben IVTV Tune (Die Haupauge WinTV PVR 150 Treiber). Und XINE welches momentan mit "XShm" als Videotreiber gestartet würde weil ich ne ATI Grafikkarte hab. Und eben TCL/TK und "wish". Der Code befindet sich eben dann in einer Textdatei welche sich "wunschname.tcl" nennt, welche dann beispielsweise mittels Symbolischen Link oder Verknüpfung auf dem Desktop gestartet werden kann. Das ganze könnte dann auch mit sowas wie "ksystraycmd" ins Ktray gedockt werden.

Wobei ich eben kein plan von TCL/TK hab und noch am Überlegen bin wie sich ein Sendersuchlauf via "ivtv-tune" und beispielsweise ein Dropdown für "europe-west" usw mittels Variable realisieren liesse.

die Kanäle auf denen ein Signal ist, hab ich bis jetzt eben manuell ausgelotet und eben eingetragen Beispielsweise im Terminal:
ivtv-tune -t europe-west -c E5
/dev/video0: 175.250 MHz (Signal Detected)

Edit: und ich hab sowas nie gelernt also ich hab mir das im Internet zusammengesucht. Deswegen ist das auch nicht sehr optimal, weil sich vieles bestimmt mit Variablen definieren liesse. Nur soweit komm ich mit meinem Knowhow eben leider nicht. Aber bisher erfüllt es seinen Zweck mit allen 31 Buttons/Kanälen.

Gruss

R
 

abgdf

Guru
Wenn's funktioniert, ist doch gut.

Leider kann ich kein Tcl/Tk.
Tk-Fenster bau ich über die Python-Anbindung:

Code:
#!/usr/bin/python
# -*- coding: latin2 -*-

import Tkinter
from Tkconstants import *

mw = Tkinter.Tk()
mw.title("Hello")
mw.geometry("+280+240")
mw.option_add("*font", "{suse sans} 15 {normal}")

label = Tkinter.Label(mw, text = "Hello")
label.pack(side = "top", anchor = "w", padx = 50, pady = 10)

btn_clear = Tkinter.Button(mw, text = "Ok" , command = mw.destroy)

btn_exit = Tkinter.Button(mw, text = "Beenden", command = mw.destroy)

btn_clear.pack(side = LEFT, anchor = "w", padx = 50, pady = 10)
btn_exit.pack(side = RIGHT, anchor = "e", padx = 50, pady = 10)

mw.mainloop()

Viele Grüße
 
OP
revealed

revealed

Guru
wollte euch meine kleine Fernbedienung nicht vorenthalten, darum hier mal meine momentane:

Man braucht halt TCL/TK und wish das Script in ein Textfile einfügen und eben in ein Wunschname.tcl Speichern. Das ganze dann via Verknüpfung zu Programm beispielsweise anknüpfen und der Befehl in der Verknüpfung könnte so aussehen: "wish /opt/Kästle/Fernbedienung.tcl"

Die tunbaren Kanäle muss man leider selbst herausfinden.
Also beispielsweise in etwa so.
im Terminal alles ivtv-tunen was möglich ist und überall wo "Signal Detected" ausgegeben wird müsste ein Sender sein.

Und die Sender halt dann mit einem Editor in das File eintragen bei:
###KANALNUMMERN BITTE HIER EINTRAGEN!!###
Momentan sind es 31 Knöpfe Einer für Xine einer zum Start von TV Browser und einer zum Beenden des Kanalwechseler:
(ich hab Hausantenne und bekomme nur die Sender, darum sind die auch angelegt. Wenn man sich ein wenig einliest kann man die Rahmen und Knöpfe beliebig erweitern.)

Update 25. Apr 2007:
- Tv Browser starten
- mtt4 für Videotext (von xawtv4)
- ivtv-tune als Tunerbefehl
- xine zur Wiedergabe
- designänderung
- videotreiber für Xine "opengl" wegen fglrx 8.36

Code:
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"
#### Variablen:
# der Befehl ivtvtune sieht eigendlich so aus: "ivtv-tune -t europe-west -c E5 -d /dev/video"
# weiter unten wird z.B. nur noch "$iv $std $tv $chan $ard $dev $node" übergeben
# Xine wird so gestartet "cat $node | xine -V $vi stdin://mpeg2"
# Variable für Videostandard Xine (mögl. XV; XShm; etc...)
set vi "opengl"
## IVTV-TUNE - Der Tunerbefehl
set iv "ivtv-tune"
# die Schalter für den Befehl ivtv-tune
set std "-t"
set chan "-c"
set dev "-d"
# ivtv-tune Werte von Videonode; Videotextnode; TV-Standard
set tv "europe-west"
set node "/dev/video1"
set vtex "/dev/vbi"
## KANALNUMMERN BITTE HIER EINTRAGEN!
set ard "E5"
set zdf "E6"
set bayern "E4"
set orf1 "E2"
set orf2 "E8"
set rtl "E11"
set neunlive "E9"
set dsf "SE10"
set sat1 "E12"
set arte "S35"
set lokalsat "21"
set rtl2 "SE14"
set eurosport "SE18"
set kabel1 "SE8"
set ntv "SE16"
set wdr "SE5"
set pro7 "SE12"
set vox "SE20"
set phoenix "S22"
set n24 "S32"
set viva "E3"
set bayernalpha "S21"
set swrbw "SE9"
set dasvierte "S33"
set superrtl "SE7"
set dreisat "E10"
set cnn "SE15"
set mdr "SE17"
set ndr "SE19"
set boerse "S34"
set keinplan "SE6"
# Alle Variablen werden dann mittels "$Variable" nach unten weitergegeben bsp. "$ard"
# also kommt beim Execbefehl unten $iv $std $tv $chan $ard $dev $node zum Einsatz
# Fenstereigenschaften Titel und Größe Knopffarbe
wm title . "Einschalter"
wm resizable . 0 0
set chc "#3366ff"
set prc "#30a453"
## Rahmen für Menü
frame .mbar -relief raised -bd 3
pack .mbar -side top -fill x
## die Rahmen für die Knöpfe
frame .rahmen -borderwidth 1 -relief raised
frame .rahmen1 -borderwidth 1 -relief raised
frame .rahmen2 -borderwidth 1 -relief raised
frame .rahmen3 -borderwidth 1 -relief raised
frame .rahmen4 -borderwidth 1 -relief raised
frame .rahmen5 -borderwidth 1 -relief raised
frame .rahmen6 -borderwidth 1 -relief raised
frame .rahmen7 -borderwidth 1 -relief raised
frame .rahmen8 -borderwidth 1 -relief raised
frame .rahmen9 -borderwidth 1 -relief raised
frame .rahmen10 -borderwidth 1 -relief raised
frame .rahmen11 -borderwidth 1 -relief raised
frame .rahmen12 -borderwidth 1 -relief raised
frame .rahmen13 -borderwidth 1 -relief raised
frame .rahmen14 -borderwidth 1 -relief raised
frame .rahmen15 -borderwidth 1 -relief raised
frame .rahmen16 -borderwidth 1 -relief raised
frame .rahmen17 -borderwidth 1 -relief raised
pack .rahmen -side top -fill x
pack .rahmen1 -side top -fill x
pack .rahmen2 -side top -fill x
pack .rahmen3 -side top -fill x
pack .rahmen4 -side top -fill x
pack .rahmen5 -side top -fill x
pack .rahmen6 -side top -fill x
pack .rahmen7 -side top -fill x
pack .rahmen8 -side top -fill x
pack .rahmen9 -side top -fill x
pack .rahmen10 -side top -fill x
pack .rahmen11 -side top -fill x
pack .rahmen12 -side top -fill x
pack .rahmen13 -side top -fill x
pack .rahmen14 -side top -fill x
pack .rahmen15 -side top -fill x
pack .rahmen16 -side top -fill x
pack .rahmen17 -side top -fill x
### Die Menüleiste
menubutton .mbar.file -text "Datei" -menu .mbar.file.menu
pack .mbar.file -side left
menubutton .mbar.info -text "Info" -menu .mbar.info.menu
pack .mbar.info -side left
menu .mbar.file.menu
.mbar.file.menu add command -label "Ende" -command { exit }
menu .mbar.info.menu
.mbar.info.menu add command -label "Über.." -command { tk_messageBox -message  "Ich bin ein Kästle; damit in Linux mit $iv und Xine Kanäle gewechselt werden können." }
.mbar.info.menu add command -label "Einstellungen" -command { tk_messageBox -message "TV Standard ist: $tv
Xine verwendet: $vi
Videonode ist: $node
Videotext von: $vtex" }
### Die Knöpfe
## mtt4: TV-Browser; Xine und Beenden
button .vid -width "8" -text "Videotext" -foreground $prc -command { exec mtt4 -c $vtex & }
pack .vid -fill x -expand true -side left -in .rahmen17
button .beenden -width "5" -text "Beenden" -foreground #bb3737 -command exit
pack .beenden -fill x -expand true -side left -in .rahmen17
button .tvbrowser -width "8" -text "TV Browser" -foreground $prc -command   { exec tvbrowser.sh  & }
pack .tvbrowser -fill x -expand true -side right -in .rahmen17
button .xine  -width "28" -text "XINE" -foreground $prc -command { exec cat $node | xine -V $vi stdin://mpeg2 & }
pack .xine -fill x -expand true -side left -in .rahmen
# ---------------------------------------------------------
## Knöpfe IVTV-TUNE im Terminal ausführen
button .1  -width "12" -text "1. ARD" -foreground $chc -command { exec $iv $std $tv $chan $ard $dev $node & }
pack .1 -fill x -expand true -side left -in .rahmen1
button .2 -width "12" -text "2. ZDF" -foreground $chc -command { exec $iv $std $tv $chan $zdf $dev $node & }
pack .2 -fill x -expand true -side left -in .rahmen1
button .3 -width "12" -text "3. Bayern" -foreground $chc -command { exec $iv $std $tv $chan $bayern $dev $node & }
pack .3 -fill x -expand true  -side left -in .rahmen2
button .4 -width "12" -text "4. ORF 1" -foreground $chc -command { exec $iv $std $tv $chan $orf1 $dev $node & }
pack .4 -fill x -expand true  -side left -in .rahmen2
button .5 -width "12" -text "5. ORF 2" -foreground $chc -command { exec $iv $std $tv $chan $orf2 $dev $node & }
pack .5 -fill x -expand true  -side left -in .rahmen3
button .6 -width "12" -text "6. RTL" -foreground $chc -command { exec $iv $std $tv $chan $rtl $dev $node & }
pack .6 -fill x -expand true  -side left -in .rahmen3
button .7 -width "12" -text "7. 9Live" -foreground $chc -command { exec $iv $std $tv $chan $neunlive $dev $node & }
pack .7 -fill x -expand true  -side left -in .rahmen4
button .8 -width "12" -text "8. DSF" -foreground $chc -command { exec $iv $std $tv $chan $dsf $dev $node & }
pack .8 -fill x -expand true  -side left -in .rahmen4
button .9 -width "12" -text "9. SAT 1" -foreground $chc -command { exec $iv $std $tv $chan $sat1 $dev $node & }
pack .9 -fill x -expand true  -side left -in .rahmen5
button .10 -width "12" -text "10. arte" -foreground $chc -command { exec $iv $std $tv $chan $arte $dev $node & }
pack .10 -fill x -expand true  -side left -in .rahmen5
button .11 -width "12" -text "11. LokalSAT" -foreground $chc -command { exec $iv $std $tv $chan $lokalsat $dev $node & }
pack .11 -fill x -expand true  -side left -in .rahmen6
button .12 -width "12" -text "12. RTL II" -foreground $chc -command { exec $iv $std $tv $chan $rtl2 $dev $node & }
pack .12 -fill x -expand true  -side left -in .rahmen6
button .13 -width "12" -text "13. EuroSport" -foreground $chc -command { exec $iv $std $tv $chan $eurosport $dev $node & }
pack .13 -fill x -expand true  -side left -in .rahmen7
button .14 -width "12" -text "14. Kabel1" -foreground $chc -command { exec $iv $std $tv $chan $kabel1 $dev $node & }
pack .14 -fill x -expand true  -side left -in .rahmen7
button .15 -width "12" -text "15. N-TV" -foreground $chc -command { exec $iv $std $tv $chan $ntv $dev $node & }
pack .15 -fill x -expand true  -side left -in .rahmen8
button .16 -width "12" -text "16. WDR" -foreground $chc -command { exec $iv $std $tv $chan $wdr $dev $node & }
pack .16 -fill x -expand true  -side left -in .rahmen8 
button .17 -width "12" -text "17. Pro7" -foreground $chc -command { exec $iv $std $tv $chan $pro7 $dev $node & }
pack .17 -fill x -expand true  -side left -in .rahmen9
button .18 -width "12" -text "18. VOX" -foreground $chc -command { exec $iv $std $tv $chan $vox $dev $node & }
pack .18 -fill x -expand true  -side left -in .rahmen9
button .19 -width "12" -text "19. Phoenix" -foreground $chc -command { exec $iv $std $tv $chan $phoenix $dev $node & }
pack .19 -fill x -expand true  -side left -in .rahmen10
button .20 -width "12" -text "20. N24" -foreground $chc -command { exec $iv $std $tv $chan $n24 $dev $node & }
pack .20 -fill x -expand true  -side left -in .rahmen10
button .21 -width "12" -text "21. VIVA" -foreground $chc -command { exec $iv $std $tv $chan $viva $dev $node & }
pack .21 -fill x -expand true -side left -in .rahmen11
button .22 -width "12" -text "22. Bayern α" -foreground $chc -command { exec $iv $std $tv $chan $bayernalpha $dev $node & }
pack .22 -fill x -expand true -side left -in .rahmen11
button .23 -width "12" -text "23. SWR>>BW" -foreground $chc -command { exec $iv $std $tv $chan $swrbw $dev $node & }
pack .23 -fill x -expand true -side left -in .rahmen12
button .24 -width "12" -text "24. DasVierte" -foreground $chc -command { exec $iv $std $tv $chan $dasvierte $dev $node & }
pack .24 -fill x -expand true  -side left -in .rahmen12
button .25 -width "12" -text "25. SuperRTL" -foreground $chc -command { exec $iv $std $tv $chan $superrtl $dev $node & }
pack .25 -fill x -expand true  -side left -in .rahmen13
button .26 -width "12" -text "26. 3Sat" -foreground $chc -command { exec $iv $std $tv $chan $dreisat $dev $node & }
pack .26 -fill x -expand true  -side left -in .rahmen13
button .27 -width "12" -text "27. CNN" -foreground $chc -command { exec $iv $std $tv $chan $cnn $dev $node & }
pack .27 -fill x -expand true  -side left -in .rahmen14
button .28 -width "12" -text "28. MDR" -foreground $chc -command { exec $iv $std $tv $chan $mdr $dev $node & }
pack .28 -fill x -expand true -side left -in .rahmen14
button .29 -width "12" -text "29. NDR" -foreground $chc -command { exec $iv $std $tv $chan $ndr $dev $node & }
pack .29 -fill x -expand true  -side left -in .rahmen15
button .30 -width "12" -text "30. Börse" -foreground $chc -command { exec $iv $std $tv $chan $boerse $dev $node & }
pack .30 -fill x -expand true  -side left -in .rahmen15
button .31 -width "12" -text "31. kein plan" -foreground $chc -command { exec $iv $std $tv $chan $keinplan $dev $node & }
pack .31 -fill x -expand true  -side left -in .rahmen16
button .32 -width "12" -text " " -foreground $chc -command { exec $iv $std $tv $chan $pro7 $dev $node & }
pack .32 -fill x -expand true  -side left -in .rahmen16
### /EOF
Unbedingt anschaun!:
http://www.linux-club.de/viewtopic.php?p=454239#454239

Update:
Workaround für webcam gspca in meinem Fall:
http://www.linux-club.de/viewtopic.php?p=469598#469598
bzw. Workaround keine webcam und Kopete dann IVTV:
http://www.linux-club.de/ftopic88294.html
 
Oben