askyesno() immer False

Fragen zu Tkinter.
Antworten
jocsch
User
Beiträge: 31
Registriert: Freitag 4. April 2003, 13:09
Wohnort: Egloffstein (Hundshaupten)

Hallo Forum!
Heute hab' ich mal ein ganz komisches Problem:

Code: Alles auswählen

tkMessageBox.askyesno()
gibt in meinem Programm grundsätzlich 'False' zurück. Ich importiere am Anfang

Code: Alles auswählen

from Tkinter import *
import tkFileDialog
import tkSimpleDialog
import tkMessageBox

#Programmtext
Gibts da irgendwelche Nameskonflikte? Jemand ne Idee was (?)Ich falschmache?

Danke im voraus, jocsch
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi jocsch,

bei mir get's

Code: Alles auswählen

Python 2.3.3 (#2, Feb 24 2004, 09:29:20)
Type "copyright", "credits" or "license" for more information.
 
IPython 0.4.0 -- An enhanced Interactive Python.
?       -> Introduction to IPython's features.
@magic  -> Information about IPython's 'magic' @ functions.
help    -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
 
In [1]: import tkMessageBox
 
In [2]: print tkMessageBox.askyesno()
True
 
In [3]: print tkMessageBox.askyesno()
False
 
In [4]:
Beim ersten mal hab ich auf Ja geklickt und beim zweiten mal auf Nein


Gruß

Dookie
jocsch
User
Beiträge: 31
Registriert: Freitag 4. April 2003, 13:09
Wohnort: Egloffstein (Hundshaupten)

Hallo!
Das klappt bei mir auch, ich hab inzwischen den Übeltäter aufgespürt. Versuch mal folgendes:

Code: Alles auswählen

#!/usr/bin/python

import tkFileDialog
import tkMessageBox

class spam:
	def __init__(self):
		self.egg = None

	def myTest(self):
		someFileName = tkFileDialog.askopenfilename(title = 'What have I done ?')
		print tkMessageBox.askyesno('Simple question', 'Am I False?')

if __name__ == '__main__':
	a = spam()
	a.myTest()
Drückt man nun auf 'Ja', wird 'False' zurückgegeben. Irgendwas scheint 'askopenfilename()' da kaputtzumachen, aber was ?

Dankbar für jeden hint, jocsch
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Kann ich nicht bestätigen, bei mir läuft es wunderbar :)

Python 2.3; Tcl 8.4; Win 2000

Milan
jocsch
User
Beiträge: 31
Registriert: Freitag 4. April 2003, 13:09
Wohnort: Egloffstein (Hundshaupten)

Hi zurück!
Bei mir gehts immer noch nicht.
SuSE 9.0 Standardinstallation (Python 2.3, Tcl/Tk 8.4)
Sollte doch hoffentlich nicht am OS liegen???

Doch noch jemand ne Idee?

jocsch
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi jocsch,

hast Du eine Datei tkMessageBox.py im gleichen Verzeichnis wie Dein Script oder im Pythonpfad, oder heisst Dein Script vielleicht gar so?


Gruß

Dookie
Gast

Hi!
Nein, habe ich nicht - und auch mein script heisst anders.
Wenn ich oben die Zeile 'someFileName = ...' auskommentiere gehts ja wie gesagt auch, ergo muss das askopenfilename() irgendwas bewirken. Der Schlauch auf dem ich stehe wird immer länger ...

Gruss jocsch
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi jocsch

Habe das gleiche Problem mit
deinem Skript, hier auch unter
SuSE 9.0. Wenn du aber
tkMessageBox.askokcancel
verwendest, scheint es zu klappen
OK ist fast gleich Yes und
Cancel ist fast gleich NO Hi!

Es scheint effektiv Unterschiede
zwischen SuSE und Win2000 zu geben.

Gruss wuf :wink:
Take it easy Mates!
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Ich habs jetzt mal unter Debian probiert, auch da kommt bei askyesno immer False als ergebnis, bei askokcancel gehts.
Wohl ein Bug in tcl/tk?


Gruß

Dookie
jocsch
User
Beiträge: 31
Registriert: Freitag 4. April 2003, 13:09
Wohnort: Egloffstein (Hundshaupten)

Hallo!
Na da bin ich ja erst mal weitestgehend beruhigt, hab schon an mir gezweifelt ...
Danke an alle fürs testen + Grüsse, jocsch
Antworten