-2

私は、Tkinter を使用して 1 つの Tkinter ソフトウェアから exe ファイルを開く方法を研究しています。私の最終製品は、exe ファイルに変換された 1 つの Tkinter ソフトウェアからすべての exe ファイルを実行する Windows 7 exe ファイルでした。

コードを上から下に説明します これは私の Tkinter テンプレートの一種です

from Tkinter import *
from PIL import Image, ImageTk
import os
class App:
def __init__(self, master):
    self.frame = Frame(master)

ユーザー情報を提供するために画像を追加しました ソフトウェアの使用方法

    img = Image.open("data.gif")
    intro = ImageTk.PhotoImage(img)
    right = Label(None, image=intro)
    right.grid(row=0, column=0, columnspan=4)
    right.image=intro

次に、ボタンをグリッドに追加し、すべてのボタンを self.b と呼び、スタック オーバーフローで人々を混乱させました。あなたはすぐにコメントを読むでしょう。

    self.b = Button(self.frame, bg="red", fg="white", font=("Helvetica", 14), text = ' \n confilextracter \n ', command = self.openFile1)
    self.b.grid(row = 1, column=0)
    self.b = Button(self.frame, bg="red", fg="white", font=("Helvetica", 14), text = ' \n confileditor \n ', command = self.openFile2)
    self.b.grid(row = 1, column=1)
    self.b = Button(self.frame, bg="red", fg="white", font=("Helvetica", 14), text = ' \n confilerehasher \n ', command = self.openFile3)
    self.b.grid(row = 1, column=2)
    self.b = Button(self.frame, bg="red", fg="white", font=("Helvetica", 14), text = ' \n Turn off the Shed \n ', command = self.openFile4)
    self.b.grid(row = 1, column=3)
    self.frame.grid()

次に、実行するボタンのジョブを指定する必要がありました。exe ファイルの名前を変更すると、スタック オーバーフローで人々が混乱しました。申し訳ありません。

def openFile1(self):
    os.startfile("confilextracter.exe")
def openFile2(self):
    os.startfile("confileditor.exe")
def openFile3(self):
    os.startfile("confilerehasher.exe")

最後のボタンコードを修正したかったのですが、すぐにわかるように、他のすべての人がこのコードの他のすべての部分を整理するのに忙しかったので、自分で答えを見つけました。この時点で、この次のボタンにはエラーがあります。

def openFile4(self):
    self.b.configure(command = self.b.destroy)

次に、ファイルを閉じました

root = Tk()
app = App(root)
mainloop()
4

2 に答える 2

2

osモジュールの使用:

from Tkinter import *
import os

class App:
    def __init__(self, master):
        self.frame = Frame(master)
        self.b = Button(self.frame, text = 'Open', command = self.openFile)
        self.b.grid(row = 1)
        self.frame.grid()
    def openFile(self):
        os.startfile(_filepath_)

root = Tk()
app = App(root)
root.mainloop()
于 2013-02-25T02:05:09.380 に答える
1

これは私が物事を機能させるために行ったこと です。f3ar3dlegend のサンプル コード (上にスクロール) を使用して、かなりうまく機能したので作業を開始しました。コードの一番上の行について話し、完全な内訳のために下に進みましょう。

from Tkinter import *
from PIL import Image, ImageTk
import os

Tkinter インポートから、これは pyhton に GUI ドライバーをロードするように指示します。from PIL import Image, ImageTK は Python に Pyhton 画像ライブラリをロードするように指示し、カラー写真を使用できるようにします。これを私の理解にインポートすると、ドライバーが読み込まれるため、PythonはPythonアプリから外部プログラムを実行して、それらを実行できます。

私が最初にしたことは、f3ar3dlegend のコードに画像を追加して、ユーザーにこのコードを含む情報ページを提供することでした。

    class App:
    def __init__(self, master):

    self.frame = Frame(master)
    img = Image.open("data.gif")
    intro = ImageTk.PhotoImage(img)
    right = Label(None, image=intro)
    right.grid(row=0, column=0, columnspan=4)
    right.image=intro

コードの 1 行で、画像が 24 時間表示されなくなりました。単にコードが不足しているだけでした。

    right.image=intro

このコード行は、画像がガベージ コレクションされるのを防ぎます (それが何を意味するにせよ) 私はそれを追加したことを知っています。

次に多くの作業を行ったのは、ボタンの書式設定でした。ご存知のとおり、幅、サイズ、色、フォントです。self.frame を使用するために考え出したのは、まったくの当て推量でした。試行の 1 つが機能するまで、アイデアを試行し続けました。また、この全体をPython Tkinter Gridに配置しているため、画像は行0に配置され、列は4列または5列にまたがり、より多くのボタンを配置できます。これらのボタンはすべて行 0 ではなく行 1 にありました。コマンドが別の定義にある限り、コードにエラーがない限り、すべてのボタン self.b を呼び出すことができることがわかりました。

    self.b = Button(self.frame, bg="darkred", width=18, fg="white", font=("Arial", 14), text = ' \n confilextracter \n ', command = self.openFile1)
    self.b.grid(row = 1, column=0)
    self.b = Button(self.frame, bg="red", width=17, fg="white", font=("Arial", 14), text = ' \n confileditor \n ', command = self.openFile2)
    self.b.grid(row = 1, column=1)

次に行ったのは def で、これらがないとボタンは機能しません。ウイルスをアップロードしていると思われるストック オーバーフローの原因は、自分のプログラミングをよりよく理解できるようにプログラム名を変更したことです。

    def openFile1(self):
    os.startfile("confilextracter.exe")
    def openFile2(self):
    os.startfile("confileditor.exe")

それはこのように動作します。openFile1 はボタン コールアウトです。ボタンを押すとコールアウトが表示され、一致する定義がコールのアンサーに従います。os.startfile は私にとっては新しい用語ですが、単にオペレーティング システムの起動ファイルを意味します。("confileditor.exe") は、必要なファイルの文字列名が (" ") の間にあり、2 つを一緒にすると、ファイルが独自のウィンドウで実行されると言っています。このソフトウェアの最後の部分で私は和解し、これでもっとできると言いました。f3ar3dlegend のサンプル コードを再び使用することから始めました。

   root = Tk()
   app = App(root)
   mainloop()

これは基本的にすべてをオフにするので、Python は何かを表示する時が来たことを認識し、mainloop は Tkinter に私が何かをするのを待つように伝えます。問題は、ソフトウェアがページの半分で開いたり、画面のどこかで開いたりすることだったので、このコードを追加して、ソフトウェアを画面の左上に配置しました。

   app = App(root)
   root.geometry('+0+0')
   mainloop()

私が最後にしたことの1つは、5回または6回試行した後、ボタンをクリックしてソフトウェアを終了するためのボタンを取得することでした.ボタンを押すだけでTkinterにソフトウェアウィンドウを破棄させました. コードは。

   self.b = Button(self.frame, bg="red", width=18, fg="white", font=   ("Arial", 14), text = ' \n Turn off the Shed \n ', command = self.openFile4)
   self.b.grid(row = 1, column=3)
   def openFile4(self):
   root.destroy()

root.destory を間違って使用している人々のスタック オーバーフローに関する数え切れないほどの例を見てきました。人々がプログラムをダウンロードできるようにプログラムをオンラインに置くことについて私が学んだ非常に重要な教訓の1つは、ホストのCustomberサポートに連絡し、TOS利用規約へのリンクを要求する必要があるということです。パブリッシングを行います。ありがとうございました。

于 2013-02-25T22:49:39.163 に答える