2

私は現在、本を読んでいて、PyScripter を使用しています。GUI の取り扱いを開始する部分にたどり着くまでは、すべて順調でした。

基本的に、プログラムを起動してもすぐには反応しません。1 つの部分は、ユーザーがウィンドウ内の 3 つのポイントをクリックし、ポイントを接続して三角形を作成するプログラムを作成することです。三角形が作られるとすぐに、反応しなくなります。そのため、プログラムが意図していたことが実行されるのを待ってから、めちゃくちゃになります。

どんな助けでも感謝します、ありがとう。

from graphics import *


def main():
    win = GraphWin("Draw a Triangle")
    win.setCoords(0.0, 0.0, 10.0, 10.0)
    message = Text(Point(5, 0.5), "Click on three points")
    message.draw(win)

    p1 = win.getMouse()
    p1.draw(win)
    p2 = win.getMouse()
    p2.draw(win)
    p3 = win.getMouse()
    p3.draw(win)

    triangle = Polygon(p1,p2,p3)
    triangle.setFill("peachpuff")
    triangle.setOutline("cyan")
    triangle.draw(win)

    message.setText("click anywhere to quit")
    win.getMouse()

main()

編集:コードで更新。前に言ったように、私が読んでいる本の著者は、初心者が簡単に使えるようにするためだけに tk からツールキットを作成しました。

4

2 に答える 2

1

実際、それは「めちゃくちゃ」ではありませんでした。win.getMouse() の後に win.close() を入れるのを忘れただけです。

于 2015-02-04T21:14:47.573 に答える
0

ほとんどの場合、メイン イベント ループは実行されていません。これを行う方法は、使用している GUI ツールキットによって異なりますが、イベント ループを開始すると、終了するまでコンソールを引き継ぐため、この方法では問題があります。

おそらくこれを処理する最も簡単な方法は、IPython ( http://ipython.org )に切り替えることです。コンソールを起動したら、次のことができます

%gui wx

(またはqt、tk、または使用しているGUIツールキット)、バックグラウンドでアプリループを開始し、実験できるようにします.

これは python 入力フックを使用しており、必要に応じて IPython からそのコードを盗んで pyscripter で使用することは完全に可能です。それらを一緒に機能させる方法もあるかもしれませんが、確かではありません。

于 2013-10-24T20:18:16.677 に答える