1 votes

Python 3.2 script ne fonctionne pas et/ou n'importe pas tkinter lorsqu'il est exécuté depuis le bureau

Je suis vraiment perplexe, mais la réponse est probablement très simple et je ne la vois pas :

J'ai une série de modules Python qui fonctionnent bien à partir de l'interpréteur Python, mais rien ne se passe lorsqu'ils sont exécutés à partir d'une interface graphique. J'ai essayé de créer un fichier .desktop, d'ajouter des shebangs, de changer les permissions à 777 et de renommer en .pyw pour tous les modules. Un seul module de test fonctionne correctement, je sais donc qu'il ne s'agit pas d'une erreur de frappe.

Si je clique sur le module principal .pyw et cliquez sur "Exécuter" dans la boîte de dialogue du système, rien ne se passe. De même, le fichier .py (et le fichier .desktop via le menu), 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 mais rien ne se passe, ce qui m'amène à penser que tkinter ne se charge pas pour une raison quelconque.

Quelqu'un a-t-il une idée ?

2voto

user217272 Points 1

Solution aimablement fournie sur le forum 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X