【问题标题】:TKinter canvas X,Y PlottingTKinter 画布 X,Y 绘图
【发布时间】:2017-03-22 22:41:27
【问题描述】:

我想知道是否有在线或可下载的程序允许您设置所需的窗口大小,绘制线条以进行绘图,然后打印原点 (x,y) 值和结束 (x,y) 值所有绘制的线条。这真的会加快我在 Tkinter 上的线条绘制速度,因为我不必继续反复试验来让我的线条匹配并加入。如果没有这样的程序,有什么方法可以比 (x,y) 反复试验更快地在画布上绘图。谢谢 :)

【问题讨论】:

    标签: python python-3.x canvas tkinter tk


    【解决方案1】:

    我给你做了点小东西:)

    <!DOCTYPE html>
    <html>
    
    <head>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <meta charset="utf-8">
      <title>Example</title>
      <style>
        body {
          height: 3000px;
        }
        
        .dot {
          width: 2px;
          height: 2px;
          background-color: black;
          position: absolute;
        }
      </style>
    </head>
    
    <body>
      <div>Click mouse to start then click again to pause or click clear</div>
      <button id="clear">Mouse over to clear</button>
      <textarea id="results"></textarea>
      <script>
        (function() {
          "use strict";
    
          var draw = false;
    
          function clear() {
            $(".dot").remove();
            $("#results").html("");
          }
    
          function stop() {
            draw = false;
          }
    
          function start() {
            draw = true;
          }
          $("#clear").mouseover(clear);
          document.onmousedown = start;
          document.onmouseup = stop;
          document.onmousemove = handleMouseMove;
    
          function handleMouseMove(event) {
            if (draw == false) return;
            var dot, eventDoc, doc, body, pageX, pageY;
    
            event = event || window.event; // IE-ism
    
            // If pageX/Y aren't available and clientX/Y
            // are, calculate pageX/Y - logic taken from jQuery
            // Calculate pageX/Y if missing and clientX/Y available
            if (event.pageX == null && event.clientX != null) {
              eventDoc = (event.target && event.target.ownerDocument) || document;
              doc = eventDoc.documentElement;
              body = eventDoc.body;
    
              event.pageX = event.clientX +
                (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
                (doc && doc.clientLeft || body && body.clientLeft || 0);
              event.pageY = event.clientY +
                (doc && doc.scrollTop || body && body.scrollTop || 0) -
                (doc && doc.clientTop || body && body.clientTop || 0);
            }
    
            // Add a dot to follow the cursor
            dot = document.createElement('div');
            dot.className = "dot";
            dot.style.left = event.pageX + "px";
            dot.style.top = event.pageY + "px";
            dot.style.position = "absolute";
            document.body.appendChild(dot);
            var result = event.pageX + "," + event.pageY + "\n";
            $("#results").append(result);
          }
        })();
      </script>
    </body>
    
    </html>

    只需单击鼠标并在输出上绘图,然后您就可以复制文本框输出。

    【讨论】:

    • 绘制直线不准确,但仍然可以正常工作。太棒了,谢谢你。如果您可以将其更改为类似于 MS Paint 中的线条工具,而不是拖动来绘制将是完美的东西,但无论哪种方式,这都是非常有用的。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2017-02-02
    • 2018-03-05
    相关资源
    最近更新 更多