O script do Python 3.2 não está funcionando e / ou importando o tkinter ao executar da área de trabalho

1

Estou realmente intrigado com isso, mas a resposta é provavelmente muito simples e não consigo ver:

Eu tenho uma série de módulos python que funcionam bem a partir do intérprete python, mas nada acontece ao executar a partir de uma situação GUI. Eu tentei criar um arquivo .desktop, adicionando shebangs, alterando permissões para 777 e renomeando para .pyw para todos os módulos. Um único módulo de teste funciona bem sozinho, então sei que não é um erro de digitação.

Se eu clicar no arquivo .pyw do módulo principal e clicar em "Executar" no diálogo do sistema, nada acontece. Da mesma forma, o arquivo .py (e o .desktop via menu), nada acontece. Aqui está o começo do meu código:

#!/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)

Se eu put k = msg.showerror("xxxx","yyyy") após a linha sdg = tk.simpledialog , ainda assim nada acontece o que me leva a acreditar que o tkinter não está carregando por algum motivo.

Alguma ideia é de alguém?

    
por Corvus 19.11.2013 / 14:34

1 resposta

1

Solução gentilmente fornecida na placa Stackoverflow da Furas:

Para o Python 2, tente:

import tkMessageBox
import tkSimpleDialog

msg = tkMessageBox
sdg = tkSimpleDialog

ou mais simples:

import tkMessageBox as msg
import tkSimpleDialog as sdk

Para o Python 3, tente:

from tkinter import messagebox
from tkinter import simpledialog

msg = messagebox
sdg = simpledialog

ou mais simples:

from tkinter import messagebox as msg
from tkinter import simpledialog as sdg

* * Eu usei as duas últimas linhas e funciona perfeitamente agora ..

    
por Corvus 20.11.2013 / 15:20