如何在没有Hardcore的python的turtle模块中制作多个按钮

时间:2019-07-10 18:46:04

标签: python system turtle-graphics python-3.7

我想用按钮制作一个乌龟python'app'。我知道如何制作按钮,但我想在那里制作1个以上的按钮,请不要使用任何大型硬纸板。

我在YouTube上看到了说明并阅读了评论,一个人问了这样的问题,YTBer回答是。您将需要一些类似的东西。我不要铁杆。

...您是对的,当使用2个按钮时它不起作用,我意识到在制作视频后,但是幸运的是我找到了解决方案.......所以它不起作用的原因是因为两个按钮需要turtle.onscreenclick方法来侦听两个对象的方法,并且由于某种原因它无法执行此操作,因此我们可以通过以下方式在类中对其进行硬编码:

import turtle
import time

wn = turtle.Screen()
wn.bgcolor("Green")
wn.setup(700, 700)
wn.tracer(0)

class Button(turtle.Turtle):
    def __init__(self,s, text, x, y, w, h, c, i, p, a=None, b2=None):
        turtle.Turtle.__init__(self)
        self.msg = text
        self.x = x
        self.y = y
        self.pens...

我试图exec()cdlane的代码,但是我得到了

I got a


Traceback (most recent call last):
  File "<pyshell#2>", line 60, in <module>
    ''')
  File "<string>", line 51, in <module>
  File "<string>", line 10, in __init__
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/turtle.py", line 3816, in __init__
    visible=visible)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/turtle.py", line 2557, in __init__
    self._update()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/turtle.py", line 2660, in _update
    self._update_data()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/turtle.py", line 2646, in _update_data
    self.screen._incrementudc()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/turtle.py", line 1292, in _incrementudc
    raise Terminator
turtle.Terminator

使用了exec('')命令

1 个答案:

答案 0 :(得分:0)

TypeScript Hero建立在class Button extends React.Component { state = { type: 'Accept' } types = ["Accept", "Recall", "Start", "Close"]; doCall = (type) => { // requests here const nextType = this.types[this.types.indexOf(this.state.type) + 1]; if (nextType) { this.setState({type: nextType}); } else { // action you want to do if "Close" is pressed } } render() { const {type} = this.state; return (<button onClick={() => this.doCall(type)} > {type} </button>); } } React.render(<Button />, document.getElementById('app')); turtle之上,因此您可以使用tkinter和其他小部件并将其添加到画布。

tkinter.Canvas

tkinter.Button需要父级-这里只能是import turtle import tkinter as tk def test1(): print("clicked World") def test2(): print("clicked World") canvas = turtle.getcanvas() parent = canvas.master button1 = tk.Button(parent, text='Hello', command=test1) id1 = canvas.create_window((0,0), window=button1) button2 = tk.Button(parent, text='World', command=test2) id2 = canvas.create_window((100,0), window=button2) turtle.done() 。如果您忘记了父母,那么它将创建tkinter的窗口,您将看到两个窗口。

Button需要不带canvas.master和参数的函数名称。单击按钮时,它将运行此功能。

command=还有其他选项,例如()Button等。

background用于添加任何tkinter的小部件。第一个参数是它在画布上的位置。它还有其他选择。

font给出了ID,您可以使用该ID删除小部件create_window或移动它crete_window


Tkinter:CanvasButtonmore widgets


编辑:它创建10个按钮,每个按钮都使用canvas.delete(ID)为参数分配功能。每个按钮都会更改canvas.move(ID, offset_x, offset_y)

上的文本
lambda