web-dev-qa-db-ja.com

Python 3.2デスクトップから実行しているときに、スクリプトが機能しない、またはtkinterをインポートしない

私は本当にこれに困惑していますが、答えはおそらく非常に単純で、それを見ることができません:

pythonインタープリター内で正常に動作する一連のpythonモジュールがありますが、GUIの状況から実行すると何も起こりません。すべてのモジュールについて、.desktopファイルを作成し、シバンを追加し、パーミッションを777に変更し、_.pyw_に名前を変更しようとしました。単一のテストモジュールはそれ自体で正常に機能するため、タイプミスではないことがわかります。

メインモジュール_.pyw_ファイルをクリックし、システムダイアログから[実行]をクリックしても何も起こりません。同様に、_.py_ファイル(およびメニュー経由の_.desktop_)も何も起こりません。これが私のコードの始まりです。

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

行_sdg = tk.simpledialog_の後のput k = msg.showerror("xxxx","yyyy")の場合、何も起こらず、何らかの理由でtkinterがロードされていないと思われます。

誰でもアイデアはありますか?

1
Corvus

FurasがStackoverflowボードで提供したソリューション:

Python 2を試してください:

import tkMessageBox
import tkSimpleDialog

msg = tkMessageBox
sdg = tkSimpleDialog

またはより簡単:

import tkMessageBox as msg
import tkSimpleDialog as sdk

Python 3を試してください:

from tkinter import messagebox
from tkinter import simpledialog

msg = messagebox
sdg = simpledialog

またはより簡単:

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

* *最後の2行を使用しましたが、今では完全に機能します。

1
Corvus