1

これは私がこの質問のために書いたコードの一部です:別のウィンドウの入力テキスト?

で何が起こったのかは本当に奇妙ですmySubmitButton。ボタンは最初に起動したときに表示されたくないようですが、クリックすると表示されます。クリックしてボタンから離しても送信されません。これは非常に小さな問題であるため、これがMacでのみ発生するのか、それとも私のコンピューターでのみ発生するのかを疑っています。または、それは私が自分のコードでやったばかげたことです。

self.mySubmitButton = tk.Button(top, text='Hello', command=self.send)
self.mySubmitButton.pack()

私は何かが足りないのですか?私はグーグルで検索し、daniwebでこの質問と回答を見つけました。そして、私はそれらを比較し、彼が「修正」したことを理解できませんが、行がに変更されていることを確認しましたcommand=root.quit。しかし、とにかくそれは私のものとは異なります...

これが完全なソースコードであり、エラーメッセージはありませんが、ボタンがありません。

import tkinter as tk

class MyDialog:
    def __init__(self, parent):
        top = self.top = tk.Toplevel(parent)
        self.myLabel = tk.Label(top, text='Enter your username below')
        self.myLabel.pack()

        self.myEntryBox = tk.Entry(top)
        self.myEntryBox.pack()

        self.mySubmitButton = tk.Button(top, text='Hello', command=self.send)
        self.mySubmitButton.pack()

    def send(self):
        global username
        username = self.myEntryBox.get()
        self.top.destroy()

def onClick():
    inputDialog = MyDialog(root)
    root.wait_window(inputDialog.top)
    print('Username: ', username)

username = 'Empty'
root = tk.Tk()
mainLabel = tk.Label(root, text='Example for pop up input box')
mainLabel.pack()

mainButton = tk.Button(root, text='Click me', command=onClick)
mainButton.pack()

root.mainloop()

ここに画像の説明を入力してください

ここに画像の説明を入力してください

  1. このボタンの直後に別のボタンを追加すると、2番目のボタンが実際に表示されます。同じ関数を呼び出さなかったためかもしれないと思いましたが、同じ関数を呼び出したところ、まったく同じように表示されます...
  2. それらの間に空のラベルを追加しても、機能しません。ボタンはまだ描画されていません。

ここに画像の説明を入力してください

PS:私はMacOS10.5.8とTk8.4.7を使用しています。

4

1 に答える 1

4

こんにちはボタンが表示されますが、Windows7を使用しています。

私はあなたの例を簡単に書き直しました。それがあなたに何か違いをもたらすかどうか私は興味があります。

import tkinter as tk

class GUI(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        mainLabel = tk.Label(self, text='Example for pop up input box')
        mainLabel.pack()

        mainButton = tk.Button(self, text='Click me', command=self.on_click)
        mainButton.pack()

        top = self.top = tk.Toplevel(self)
        myLabel = tk.Label(top, text='Enter your username below')
        myLabel.pack()

        self.myEntryBox = tk.Entry(top)
        self.myEntryBox.pack()

        mySubmitButton = tk.Button(top, text='Hello', command=self.send)
        mySubmitButton.pack()

        top.withdraw()

    def send(self):
        self.username = self.myEntryBox.get()
        self.myEntryBox.delete(0, 'end')
        self.top.withdraw()
        print(self.username)

    def on_click(self):
        self.top.deiconify()

gui = GUI()
gui.mainloop()
于 2012-04-07T07:09:03.180 に答える