Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

pythonnet overloads difference between v2.5.2 and v3.0.1 #2197

Open
Labels
Milestone
@stranger0612

Description

@stranger0612

Environment

  • Pythonnet version: 3.0.1
  • Python version: 3.9
  • Operating System: Win10
  • .NET Runtime: 4.0.30319.42000

Details

Currently i am porting a module that uses pythonnet 2.5.2 with python 3.8. One part of that module creates a new font, for .net objects, such as Labels...

In my past approach (pythonnet 2.5.2; python 3.8) i had to use the following overload to perform this action

new_font = Font.Overloads[String, Single, FontStyle](font_type, font_size, font_style)

The overload was needed, because in some combinations of the font_style, i got the following exception (for a combination that will trigger this exception, see the example at the end of the question):

new_font = Font(font_type, font_size, int(font_style))System.ArgumentException: Ungültiger Parameter.   bei System.Drawing.Font.CreateNativeFont()   bei System.Drawing.Font.Initialize(FontFamily family, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont)   bei System.Drawing.Font..ctor(String familyName, Single emSize, GraphicsUnit unit)

So far so good. If i use the same overload approach with pythonnet 3.0.1 and python 3.9, it wont work due the following exception.

new_font = Font.Overloads[String, Single, FontStyle](font_type, font_size, font_style)     TypeError: No method matches given arguments for Font..ctor: (<class 'float'>, <class 'System.Drawing.FontStyle'>)

But if i skip the overload, it seems to work now? So my questions is, which approach is the "right one" to implement a robust font setter with the current pythonnet version?

For better understanding, here a minimal example to reproduce my issue

import clrclr.AddReference("System")clr.AddReference("System.Drawing")from System.Drawing import Font                         from System.Drawing import FontStyle                  from System import String     from System import Singlefont_type = "Arial"font_size = 12.0font_style = FontStyle.Regular | FontStyle.Bold# fails with pythonnet 3.0.1; works with pythonnet 2.5.2new_font = Font.Overloads[String, Single, FontStyle](font_type, font_size, font_style)     # works with pythonnet 3.0.1, but fails with pythonnet 2.5.2new_font = Font(font_type, font_size, font_style)

I also created a question here in stackoverflowhttps://stackoverflow.com/questions/76668946/pythonnet-overloads-difference-between-v2-5-2-and-v3-0-1 (actually I copied my question and added it here)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp