Inhaltsverzeichnis
1. Eine kurze Einführung in die Python-Code-Implementierung und die Turtle-Bibliothek.
Heim Backend-Entwicklung Python-Tutorial So simulieren Sie mit Python-Code eine dynamische Analoguhr

So simulieren Sie mit Python-Code eine dynamische Analoguhr

May 19, 2023 pm 09:16 PM
python

1. Eine kurze Einführung in die Python-Code-Implementierung und die Turtle-Bibliothek.

1. Verwenden Sie die Turtle-Bibliothek, um die Uhrform und die Zeiger zu zeichnen.

3 . Dynamische Uhranzeige

Grundlegende Befehle der Turtle-Bibliothek

1. Funktion „Turtle.setup()“: Wird zum Starten eines Grafikfensters verwendet. Sie verfügt über vier Parameter „turtle.setup(width, height, startx, starty)“: die Breite und Höhe von Das Startfenster zeigt den Fensterstart an, die Koordinatenposition der oberen linken Ecke des Fensters auf dem Bildschirm.

2. Funktion „turtle.pensize()“: Stellt die Breite der Bewegungsbahn der Schildkröte dar.

Die Farbe der Bewegungsbahn der Schildkröte kann durch Aufrufen der Funktion Turtle.pencolor() eingestellt werden. Diese Funktion benötigt einen Eingabeparameter, den wir auf Blau setzen oder ein anderes Farbwort verwenden können. Turtle verwendet RGB, um Farben zu definieren. Wenn Sie eine Schlange mit der gleichen Farbe wie das Bild erhalten möchten, geben Sie bitte Turtle.pencolor("#3B9909") ein.

Die Bewegungsrichtung der Schildkröte beim Start kann Turtle.seth heißen (Winkel-)Funktion zum Einstellen. Es enthält einen Eingabeparameter, nämlich den Winkelwert. Die Richtung kann als Winkel ausgedrückt werden: 0 Grad steht für Osten, 90 Grad für Norden, 180 Grad für Westen und 270 Grad für die entgegengesetzte Richtung. Wir lassen die kleine Schildkröte in einem Winkel von -40 Grad, also in Richtung Südosten, anfangen zu kriechen.

5. Turtle.circle()-Funktion: Lassen Sie die kleine Schildkröte entlang eines Kreises kriechen. Der Parameter rad beschreibt die Position des Radius der kreisförmigen Flugbahn. Dieser Radius liegt auf der linken Seite der Laufposition der Schildkröte . Wenn rad eine negative Zahl ist, befindet sich der Radius auf der rechten Seite der Laufbahn der Schildkröte und der Parameter Winkel stellt den Bogen dar, in dem die Schildkröte auf der kreisförmigen Flugbahn kriecht.

6. Turtle.fd()-Funktion: bedeutet, dass die Schildkröte in einer geraden Linie vorwärts kriecht. Sie hat einen Parameter, der die Kriechstrecke darstellt

1.datetime.date: stellt die Datumsklasse dar, gibt Jahr-Monat-Tag zurück

2.datetime.datetime: Klasse, die Datum und Uhrzeit darstellt, gibt Jahr, Monat, Tag, Stunden, Minuten und Sekunden zurück

3.datetime. time: Klasse, die Zeit darstellt,

4.datetime.timedelta: Gibt das Zeitintervall an, d

Laufende Ergebnisse:

2. MFC-Code-Implementierung

Sie können selbst ein Zifferblattbild finden und es den Bitmap-Ressourcen hinzufügen.

Einen Timer hinzugefügt, um die Zeigerdrehung zu aktualisieren

So simulieren Sie mit Python-Code eine dynamische AnaloguhrBerechnungsformel für Stundenzeiger, Minutenzeiger, Sekundenzeiger:

Erste Konvertierung in das 12-Stunden-Format, h = h % 12

Stunde Zeiger pro Stunde Dies entspricht 30 Grad im Uhrzeigersinn relativ zur y-Achse. 0,5 Grad pro Minute (Sekunden können ignoriert werden)

So simulieren Sie mit Python-Code eine dynamische AnaloguhrDer Minutenzeiger zeigt 6 Grad pro Minute und der Sekundenzeiger 0,1 Grad.

Der Sekundenzeiger zeigt ebenfalls 6 Grad pro Sekunde.

Definieren Sie die Länge des Minutenzeigers, des Sekundenzeigers und des Stundenzeigers entsprechend der Länge des Sekundenzeigers, des längsten Zeigers, des Sekundenzeigers und des kürzesten Stundenzeigers. So simulieren Sie mit Python-Code eine dynamische Analoguhr

Anhand des Winkels und der Länge des Zeigers können Sie dann die Koordinaten des Endes des Zeigers ermitteln und einfach mit der LineTo-Methode eine Linie von der Mitte der Uhr zeichnen.

MFC-Codebeispiel

import turtle                 # 导入绘图海龟模块
import datetime               # 导入日期时间模块

# 移动一段距离
def skip(distance):          # 移动方法,不留移动痕迹
    turtle.penup()           # 抬笔不绘制
    turtle.forward(distance) # 移动指定距离
    turtle.pendown()         # 落笔移动绘制

def draw_clock_dial():            # 绘制表盘的方法
    turtle.reset()           # 删除图形归位
    turtle.hideturtle()       # 隐藏箭头
    for i in range(60):       # 循环执行60次,一圈为360度所以每一秒的角度为6度
        skip(160)              # 移动160,相当于表盘圆的半径
        # 每5秒绘制一个小时刻度
        if i % 5 == 0:
            turtle.pensize(7)       # 刻度大小
            # 画时钟
            turtle.forward(20)       # 小时刻度的长度为20
            skip(-20)      # 复原小时刻度的位置
        else:
            turtle.pensize(1)      # 将画笔大小设置为1
            turtle.dot()           # 绘制分钟刻度的小圆点
        skip(-160)                 # 回到中心位置
        turtle.right(6)            # 向右旋转6度


def get_week(t):                   # 获取星期的方法
    week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    return week[t.weekday()]       # 返回当天的星期


def create_pointer(length, name):     # 创建指针方法
    turtle.reset()                 # 删除图形归位
    skip(-length * 0.1)            # 抬笔移动指定距离
    turtle.begin_poly()            # 记录多边形
    turtle.forward(length * 1.1)   # 绘制指定长度的指针
    turtle.end_poly()              # 停止记录多边形
    # 注册多边形状
    turtle.register_shape(name, turtle.get_poly())

def init_pointer():                # 初始化指针
    global secHand, minHand, hurHand, printer
    turtle.mode("logo")              # 重置Turtle指向上
    create_pointer(135,"secHand")       # 创建秒针图形
    create_pointer(110,"minHand")       # 创建分针图形
    create_pointer(90,"hurHand")        # 创建时针图形
    secHand = turtle.Turtle()        # 创建秒针turtle对象
    secHand.shape("secHand")         # 创建指定秒针名称的形状
    minHand = turtle.Turtle()        # 创建分针turtle对象
    minHand.shape("minHand")         # 创建指定分针名称的形状
    hurHand = turtle.Turtle()        # 创建时针turtle对象
    hurHand.shape("hurHand")         # 创建指定时针名称的形状
    for hand in secHand, minHand, hurHand:   # 循环遍历三个指针
        hand.shapesize(1, 1, 5)              # 设置形状拉伸大小和轮廓线
        hand.speed(0)                        # 设置速度为最快
    printer = turtle.Turtle()                # 创建绘制文字的Turtle对象
    printer.hideturtle()                     # 隐藏箭头
    printer.penup()                          # 抬笔

def move_pointer():                          # 移动指针的方法
    # 不停的获取时间
    t = datetime.datetime.today()
    second = t.second + t.microsecond * 0.000001    # 计算移动的秒
    minute = t.minute + second/60                   # 计算移动的分
    hour = t.hour + minute/60                       # 计算移动的小时
    secHand.setheading(6*second)                     # 设置秒针的角度
    minHand.setheading(6*minute)                     # 设置分针的角度
    hurHand.setheading(30*hour)                      # 设置时针的角度
    turtle.tracer(False)                             # 关闭绘画效果
    printer.forward(65)                              # 向上移动65
    # 绘制星期
    printer.write(get_week(t), align="center",font=("Courier", 14, "bold"))
    printer.back(130)                                # 倒退130
    # 绘制年月日
    printer.write(t.strftime('%Y-%m-%d'), align="center",font=("Courier", 14, "bold"))
    printer.home()                                   # 归位
    turtle.tracer(True)                              # 开启绘画效果
    turtle.ontimer(move_pointer, 10)                 # 10毫秒后调用move_pointer()方法

if __name__ == '__main__':
    turtle.setup(450, 450)      # 创建窗体大小
    init_pointer()              # 调用初始化指针的方法
    turtle.tracer(False)        # 关闭绘画效果
    draw_clock_dial()            # 绘制表盘
    move_pointer()               # 调用移动指针的方法
    turtle.mainloop()            # 不关闭窗体
Nach dem Login kopieren

Ausgabe-Cstring (bestimmen Sie, welcher Tag heute ist)

void CdrawdateDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	UpdateData(TRUE);
	CTime time = CTime::GetCurrentTime();                //获得系统时间
	m_Sec = time.GetSecond();
	m_Min = time.GetMinute();
	m_Hour = time.GetHour();

	CDC* pDC = GetDC();
	CRect rect;
	GetClientRect(&rect);                                //获取客户区域
	CBitmap bitmap;                                      //定义图片类
	bitmap.LoadBitmap(IDB_BITMAP2);                      //加载位图
	CDC memdc;                                           //定义临时画布
	memdc.CreateCompatibleDC(pDC);                       //创建画布
	memdc.SelectObject(&bitmap);                         //关联图片

	int x = rect.Width() / 2;
	int y = rect.Height() / 2;

	//memdc.DrawText(weekDay(time), &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);		// 显示星期
	CString csCurrTime;
	csCurrTime.Format("%04d-%02d-%02d                        %s", time.GetYear(), time.GetMonth(), time.GetDay(), weekDay(time));
	memdc.DrawText(csCurrTime, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);		// 显示当前日期

	CPen MinutePen(PS_SOLID, 5, RGB(0, 0, 0));               //设置分针画笔
	memdc.SelectObject(&MinutePen);
	memdc.MoveTo(x, y);
	//绘制分针
	memdc.LineTo(x + (long)100 * cos(PI / 2 - 2 * PI*m_Min / 60.0), y - (long)100 * sin(PI / 2 - 2 * PI*m_Min / 60.0));
	CPen HourPen(PS_SOLID, 8, RGB(0, 0, 0));                 //设置时针画笔
	memdc.SelectObject(&HourPen);
	memdc.MoveTo(x, y);
	//绘制时针
	memdc.LineTo(x + (long)60 * cos(PI / 2 - 2 * PI*(5 * m_Hour / 60.0 + m_Min / 12.0 / 60.0))
		, y - (long)60 * sin(PI / 2 - 2 * PI*(5 * m_Hour / 60.0 + m_Min / 12.0 / 60.0)));
	CPen SecondPen(PS_SOLID, 2, RGB(255, 0, 0));            //设置秒针画笔
	memdc.SelectObject(&SecondPen);
	memdc.MoveTo(x, y);
	memdc.LineTo(x + (long)140 * cos(PI / 2 - 2 * PI*m_Sec / 60.0), y - (long)140 * sin(PI / 2 - 2 * PI*m_Sec / 60.0));//绘制秒针
	memdc.MoveTo(x, y);
	memdc.LineTo(x + (long)10 * cos(PI / 2 - 2 * PI*(m_Sec + 30) / 60.0), y - (long)10 * sin(PI / 2 - 2 * PI*(m_Sec + 30) / 60.0));//绘制秒针
	SecondPen.DeleteObject();
	MinutePen.DeleteObject();
	HourPen.DeleteObject();
	pDC->BitBlt(0, 0, rect.right, rect.bottom, &memdc, 0, 0, SRCCOPY);                    //复制图片
	memdc.DeleteDC();                                   //复制临时画布到预览窗口
	bitmap.DeleteObject();                              //删除图片
	ReleaseDC(pDC);

	CDialogEx::OnTimer(nIDEvent);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo simulieren Sie mit Python-Code eine dynamische Analoguhr. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

Kann gegen Code in Windows 8 ausgeführt werden Kann gegen Code in Windows 8 ausgeführt werden Apr 15, 2025 pm 07:24 PM

VS -Code kann unter Windows 8 ausgeführt werden, aber die Erfahrung ist möglicherweise nicht großartig. Stellen Sie zunächst sicher, dass das System auf den neuesten Patch aktualisiert wurde, und laden Sie dann das VS -Code -Installationspaket herunter, das der Systemarchitektur entspricht und sie wie aufgefordert installiert. Beachten Sie nach der Installation, dass einige Erweiterungen möglicherweise mit Windows 8 nicht kompatibel sind und nach alternativen Erweiterungen suchen oder neuere Windows -Systeme in einer virtuellen Maschine verwenden müssen. Installieren Sie die erforderlichen Erweiterungen, um zu überprüfen, ob sie ordnungsgemäß funktionieren. Obwohl VS -Code unter Windows 8 möglich ist, wird empfohlen, auf ein neueres Windows -System zu upgraden, um eine bessere Entwicklungserfahrung und Sicherheit zu erzielen.

Kann Visual Studio -Code in Python verwendet werden Kann Visual Studio -Code in Python verwendet werden Apr 15, 2025 pm 08:18 PM

VS -Code kann zum Schreiben von Python verwendet werden und bietet viele Funktionen, die es zu einem idealen Werkzeug für die Entwicklung von Python -Anwendungen machen. Sie ermöglichen es Benutzern: Installation von Python -Erweiterungen, um Funktionen wie Code -Abschluss, Syntax -Hervorhebung und Debugging zu erhalten. Verwenden Sie den Debugger, um Code Schritt für Schritt zu verfolgen, Fehler zu finden und zu beheben. Integrieren Sie Git für die Versionskontrolle. Verwenden Sie Tools für die Codeformatierung, um die Codekonsistenz aufrechtzuerhalten. Verwenden Sie das Lining -Tool, um potenzielle Probleme im Voraus zu erkennen.

Ist die VSCODE -Erweiterung bösartig? Ist die VSCODE -Erweiterung bösartig? Apr 15, 2025 pm 07:57 PM

VS -Code -Erweiterungen stellen böswillige Risiken dar, wie das Verstecken von böswilligem Code, das Ausbeutetieren von Schwachstellen und das Masturbieren als legitime Erweiterungen. Zu den Methoden zur Identifizierung böswilliger Erweiterungen gehören: Überprüfung von Verlegern, Lesen von Kommentaren, Überprüfung von Code und Installation mit Vorsicht. Zu den Sicherheitsmaßnahmen gehören auch: Sicherheitsbewusstsein, gute Gewohnheiten, regelmäßige Updates und Antivirensoftware.

So führen Sie Programme in der terminalen VSCODE aus So führen Sie Programme in der terminalen VSCODE aus Apr 15, 2025 pm 06:42 PM

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.

Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Apr 16, 2025 am 12:12 AM

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

PHP und Python: Ein tiefes Eintauchen in ihre Geschichte PHP und Python: Ein tiefes Eintauchen in ihre Geschichte Apr 18, 2025 am 12:25 AM

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

See all articles