2

ユーザーが全画面の Tkinter GUI でさまざまなボタンを押すことができるプログラムを作成しようとしています。これらのボタンが実行する操作は私の質問には関係ありませんが、ポップアップ ダイアログ (askokcancel) を作成して、ユーザーがボタンを押したいことを確認し、「ok」が押された場合にそのボタン コードの残りを通常どおり実行するのに問題があります。 . 現在、このプログラムは /etc/profile ファイルを介してブートから実行されており、次の方法でアクセスできます

須藤ナノ /etc/profile

ここで、ディレクトリを Python ファイルを含むフォルダーに変更し、コードをロードします。起動時にボタンが正しくロードされ、正しいボタンを押すと、全画面ウィンドウにポップアップ ウィンドウが表示されます。ただし、デスクトップ シェルを介してコードを実行しようとすると、ボタンを押すとポップアップ ウィンドウが表示されますが、ルート ウィンドウの背後に隠れています。他の場所をクリックすることはできません.「タブ」と「エンター」を押すと、2つの選択肢の間を移動して1つを選択できますが、それを見ることはできません. シェルに単語を印刷するボタンがあるので、ポップアップウィンドウが実際にそこにあることがわかります。

全画面表示では、overrideredirect 機能を使用して、タスク バーやその他のオプションを非表示にします。これを FALSE に設定すると、ポップアップは意図したとおりに機能しますが、GUI だけを画面に表示しようとしています。

これが私のコードの要約版です:

from Tkinter import*
import tkMessageBox

class Application(Frame):
    def run(self):
        tkMessageBox.askokcancel("Run Confirmation!", "Are you sure?")
        print "RUN Code Intitates"

    def createWidgets(self):
        self.button1 = Button(self,height=15,width=20)
        self.button1["command"] = self.run
        self.button1.pack({"side": "left"})

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

root = Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.overrideredirect(1)
root.geometry("%dx%d+0+0" % (800, 480))

app = Application(master=root)
app.mainloop()
root.destroy()

私は決してコンピューター サイエンスの専攻ではなく、ラズベリー パイ、tkinter、および python を数週間しか使用していないため、基本的なことが抜けていたら申し訳ありません。画面としてラズベリーパイ用に作られた8インチのタッチスクリーンディスプレイを使用しています。

4

1 に答える 1