Seite 1 von 2

Fenster im 2 Bildschirm anzeigen

Verfasst: Mittwoch 14. November 2007, 15:51
von syslink88
Hallo
Ich will ein Programm schreiben zum Presentieren.
Nun will ich das, dass Fenster auf meinem 2 Bildschirm erscheint.
Ist das möglich?
Ich würde mich über eine Antwort freuen.

syslink

Verfasst: Donnerstag 15. November 2007, 12:09
von linuxfan
Hi,
willst Du, dass man das auf zwei Bildschirmen sehen kann oder NUR auf dem zweiten Bildschirm.
Gruß linuxfan

Verfasst: Donnerstag 15. November 2007, 14:18
von syslink88
Hi
Ich will das mann das Volbild NUR auf dem 2 Monitor sehen kann.

sysLINK

Re: Fenster im 2 Bildschirm anzeigen

Verfasst: Donnerstag 15. November 2007, 14:52
von gerold
syslink88 hat geschrieben:Nun will ich das, dass Fenster auf meinem 2 Bildschirm erscheint.
Hallo syslink!

Ohne Worte ;-)

Code: Alles auswählen

>>> import wx
>>> app = wx.PySimpleApp()
>>> d = wx.Display()
>>> d.GetCount()
2
>>> d.Geometry
wx.Rect(0, 0, 1280, 1024)
>>> d.ClientArea
wx.Rect(0, 0, 1280, 994)
>>> d.IsPrimary()
True
>>> d2 = wx.Display(1)
>>> d2.Geometry
wx.Rect(1280, 0, 1152, 864)
>>> d2.IsPrimary()
False
>>> 
Mit diesen Daten kannst du ein wx.Frame (ohne Rahmen) genau in das zweite Fenster positionieren.
Ob das unter Linux auch so funktioniert, musst du selber ausprobieren. Ich kann mir vorstellen, dass es Unterschiede gibt, je nachdem ob man xinerama (ich glaube das heißt so) einsetzt oder nicht.

mfg
Gerold
:-)

EDIT: Ups, das ist ja das Tkinter-Forum. :mrgreen:
EDIT2: Suchworte hinzugefügt

Suchworte: Screen Display Desktop Size Größe wxPython

Verfasst: Freitag 16. November 2007, 17:22
von syslink88
bei mir funst das nicht aber ich will Tkinter nehmen.
Nun hab ich Canvas eingebunden um im Hintergrund ein Bild zu haben.
Sowie einige Texte.
Ich will nun noch eine Uhr einbauen und da hab ich noch einige Probleme.
Ich weis nicht wie ich in der schleife denn Text im canvas ändern kann.


sysLINK

Verfasst: Freitag 16. November 2007, 17:41
von schlangenbeschwörer
:arrow: Tk.geometry(...)
:arrow: .after(ms, funk, [args,])
:arrow: Canvas.update()

Verfasst: Freitag 16. November 2007, 17:55
von EyDu
syslink88 hat geschrieben:Ich will nun noch eine Uhr einbauen und da hab ich noch einige Probleme.
Die soll man doch aber hoffentlich nicht auf der Präsentation sehen, oder? Uhrzeit auf Folien bei Präsentationen machen, zumindest mich, immer so schläfrig. :roll:

Verfasst: Freitag 16. November 2007, 18:01
von syslink88
Nein ich hab das nicht so ganz richtig erklärt es ist ein coundown.
Der auf eine bestimmte Zeit hinlaufen soll.

Verfasst: Freitag 16. November 2007, 18:18
von syslink88
das mit dem
update
verstehe ich nicht so ganz
ich hab ja um nen text anzuzeigen

Code: Alles auswählen

c.create_text('15.3c','5.4c',text=variabel,
                         font=('Arial', 40), anchor=W ,fill='white')
nun wie kann ich diesen Text updaten in einer Schleife?
In der schleife ändert sich schon die variabel.

Verfasst: Freitag 16. November 2007, 18:36
von schlangenbeschwörer
Noch ein Tip: wenn du die zeit nur als normalen text anzeigst, kannst du auch ein Label mit ner tkVariable nehmen und aufs Canvas packen. Zudem solltest du den Countdown über eine ".after-Rekursion" regeln um den tk-loop nicht zu anzuhalten.

Verfasst: Freitag 16. November 2007, 18:44
von syslink88
Nun das ist das 1. Mal das ich mit Tkinter arbeite.
Und wie soll ich die tkVariable nehmen?
.after-Rekursion ? Wie kann ich den denn einbinden?

Verfasst: Freitag 16. November 2007, 19:00
von BlackJack
Mit tk-Variablen sind Instanzen von den Klassen gemeint, deren Name mit `Var` endet, also zum Beispiel `Tkinter.IntVar` oder `Tkinter.StringVar`. Die haben jeweils eine `get()`- und eine `set()`-Methode um den Wert auszulesen oder zu setzen.

Die `after()`-Methode ist über jedes Widget aufrufbar. Schau einfach mal in die Doku.

Verfasst: Freitag 16. November 2007, 19:00
von schlangenbeschwörer
Nagut, hier mal ein Bsp., ungetestet:

Code: Alles auswählen

import Tkinter as tk
import time
class Test():
   def init(self):
      self.master = tk.Tk()
      self.var = tk.StringVar()
      tk.Label(textvariable=self.var).pack() # alternativ in Canvas packen
      self.time_update()

   def time_update(self):
       self.var.set(strftime("Zeit: %X"))
       self.master.after(1000, self.time_update)

Test().master.mainloop()
[/code]

Verfasst: Freitag 16. November 2007, 19:34
von syslink88
Ok danke für das Bsp.
Nun hab ich es etwas besser verstanden.
Nun der Befehl self.master.after fürt nach 1000 den den Befehl self.time_update aus hab ich das so richtig erkannt?

Nun wie binde ich das in Canvas ein.

Hier ist mein erstes Programm.

Code: Alles auswählen

from Tkinter import *
from time import *
import thread 
import popen2,subprocess,os 

def end(event=None): 
    root.destroy()

 
def go():                 #schleife die eigentlich alles Aktualiesiern sollte
    while 1:
        timesec = gmtime()[5]
        zeitsec = 60 - timesec
        
        
        sleep(0.5)
root=Tk()
zeit = 50
timest = gmtime()[3]
timemin = gmtime()[4]
timesec = gmtime()[5]
endst = 19                   #End Stunde
endmin = 59                #End Minute
zeitst = endst - timest
zeitmin = endmin - timemin
zeitsec = 60 - timesec
    
root.state('zoomed') 
root.overrideredirect( 1 )    
c = Canvas(master=root, width=1280, height=800,background='black') 
#hintergrund = PhotoImage(file="darkflame.gif") 
#c.create_image(0,0, image=hintergrund, anchor=NW)
c.create_text('15.3c','3.4c',text='Text: ',
              font=('Arial', 40), anchor=W ,fill='white')
                
#Zeitangabe die sich updaten soll    
c.create_text('15.3c','5.4c',text=zeitst,
                         font=('Arial', 40), anchor=W ,fill='white')
c.create_text('16.3c','5.4c',text=":",
                         font=('Arial', 40), anchor=W ,fill='white')
c.create_text('16.8c','5.4c',text=zeitmin,
                         font=('Arial', 40), anchor=W ,fill='white')
c.create_text('18.3c','5.4c',text=":",
                         font=('Arial', 40), anchor=W ,fill='white')
c.create_text('18.8c','5.4c',text=timesec,
                         font=('Arial', 40), anchor=W ,fill='white')


c.pack()
#go()
         
root.bind_all('<KeyPress-Escape>', end)


root.mainloop()

Verfasst: Freitag 16. November 2007, 19:49
von schlangenbeschwörer
:arrow: Canvas.create_window(x, y[, window=[TkinterObjekt][, ...]])

Verfasst: Freitag 16. November 2007, 20:38
von syslink88
Ok danke ich habst damit hinbekommen.
Nun kahm das nächste Problem auf wenn eine zeit bei 10 sec angekommen ist hängt sich das Programm auf.

Code: Alles auswählen

from Tkinter import * 
from time import *
import time 
import thread 


class TimerTest: 
    def __init__(self): 
        self.status = 1 
        root = Tk()
        #root.state('zoomed')       #Vollbild
        #root.overrideredirect( 1 ) #Vollbild

        

        c = Canvas(master=root, width=1280, height=800,background='black') 


        self.l = Label(font=('Arial',40),fg='white',bg='black') 
        self.l.pack
        self.o = Label(font=('Arial',40),fg='white',bg='black') 
        self.o.pack
        self.p = Label(font=('Arial',40),fg='white',bg='black') 
        self.p.pack

        #hintergrund = PhotoImage(file="darkflame.gif") 
        #c.create_image(0,0, image=hintergrund, anchor=NW)
    
        c.create_text('15.3c','3.4c',text='Text: ',
                     font=('Arial', 40), anchor=W ,fill='white')




        c.create_text('18.3c','5.4c',text=":",
                     font=('Arial', 40), anchor=W ,fill='white')
        c.create_text('14.3c','5.4c',text=":",
                     font=('Arial', 40), anchor=W ,fill='white')

        c.create_window('16.8c','5.4c', window=self.o)
        c.create_window('19.8c','5.4c', window=self.l)
        c.create_window('13.8c','5.4c', window=self.p)
        c.pack()
        self.go()
        root.mainloop() 
         
    def go(self): 
        self.status = 1 
        thread.start_new_thread(self.endless,()) 

    def endless(self): 
        i = 0 
        while self.status: 
            timest = gmtime()[3]
            timemin = gmtime()[4]
            timesec = gmtime()[5]
            endst = 20
            endmin = 30
            zeitst = endst - timest
            zeitmin = endmin-  timemin
            zeitsec = 59 - timesec

            self.p.configure(text=zeitst) 
            self.o.configure(text=zeitmin)            
            self.l.configure(text=zeitsec) 
            time.sleep(1) 
            i += 1  

    def stop_it(self): 
        self.status = 0 


TimerTest()

Verfasst: Freitag 16. November 2007, 20:39
von BlackJack

Verfasst: Freitag 16. November 2007, 20:48
von syslink88
Danke für den Link der ist super.
Aber das Problem hier ist es das der nur auf 0 runterläuft und nicht auf
eine Zeit.
Ich versuche das schon zu verändern bekomme es aber nicht hin.

sysLINK

Verfasst: Freitag 16. November 2007, 20:50
von schlangenbeschwörer
es hilft im allgemeinen, die tips die man bekommt, zu beachten :wink:

Verfasst: Freitag 16. November 2007, 21:02
von syslink88
Jo werde ich machen.