Cela me laisse vraiment perplexe, mais la réponse est probablement simple et ne le voit pas:
J'ai une série de modules python qui fonctionnent correctement à partir de l'interpréteur python, mais rien ne se produit lors de l'exécution à partir d'une situation d'interface graphique. J'ai essayé de créer un fichier .desktop, d'ajouter des shebangs, de modifier les autorisations en 777 et de renommer .pyw
pour tous les modules. Un seul module de test fonctionne bien tout seul, donc je sais que ce n'est pas une faute de frappe.
Si je clique sur le fichier .pyw
du module principal et clique sur "Exécuter" dans le dialogue système, rien ne se passe. De même, dans le fichier .py
(et dans le menu .desktop
via), rien ne se passe. Voici le début de mon code:
#!/usr/bin/python3
import tkinter as tk, imp, sys
root = tk.Tk()
msg = tk.messagebox
sdg = tk.simpledialog
import capitaliser_cfg as cfg, fileio as io
imp.reload(cfg) ; imp.reload(io)
### GO AND GET COUNTY LIST ####
# Nb: attach to config for simplicity
cfg.counties = io.getfilelist("counties.txt", "London")
if not type(cfg.counties)==list:
k = msg.showerror(cfg.version, cfg.counties)
root.destroy()
root.mainloop()
### GO AND GET DICTIONARY ####
cfg.tempdict = [[],[],[]]
cfg.spelldict = io.getdictionary("addressdict.txt","roda","Road")
if not type(cfg.spelldict)==dict:
k = msg.showerror(cfg.version, cfg.spelldict)
root.destroy()
root.mainloop()
import thinbutton as tb, labelradio as lr, fieldblock as fb, bigbutton as bb
import textblock as tx, padding as pd, widget_tools as wt
import capitaliser_mth as mth
import capitaliser_bnd as bnd
imp.reload(tb) ; imp.reload(lr) ; imp.reload(fb) ; imp.reload(bb)
imp.reload(tx) ; imp.reload(pd) ; imp.reload(wt) ;
imp.reload(mth)
imp.reload(bnd)
Si je put k = msg.showerror("xxxx","yyyy")
après la ligne sdg = tk.simpledialog
, rien ne se passe, ce qui me porte à croire que tkinter ne se charge pas pour une raison quelconque.
Des idées quelqu'un?
Solution aimablement fournie sur le tableau Stackoverflow par Furas:
Pour Python 2, essayez:
import tkMessageBox
import tkSimpleDialog
msg = tkMessageBox
sdg = tkSimpleDialog
ou plus simple:
import tkMessageBox as msg
import tkSimpleDialog as sdk
Pour Python 3, essayez:
from tkinter import messagebox
from tkinter import simpledialog
msg = messagebox
sdg = simpledialog
ou plus simple:
from tkinter import messagebox as msg
from tkinter import simpledialog as sdg
* * J'ai utilisé les 2 dernières lignes et cela fonctionne parfaitement maintenant ..