tl; dr
- 这个概念是“ C#标记”。
- 入门:右键单击项目 - >添加 - >新项目 - > .net maui->
.net MAUI ContentPage(C#)
或.net Maui ContentView(C#)
。 - 如果毛伊文档尚未(尚未)拥有所需的信息,则Google
Xamarin形式的someuelement类
someuielement
api。
MAUI“ API”文档还不存在(目前只有一个页面给出“更高级别”的解释),因此可以通过搜索相应的Xamarin表单class 来找到更多信息。
Google Xamarin表单contentpage类
查找:
在那里,我们看到c#示例:
using System;
using Xamarin.Forms;
namespace ContentPageExample
{
public class App : Application
{
public static Page GetMainPage ()
{
return new ContentPage {
Content = new Label {
Text = "Hello, Forms!",
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.CenterAndExpand,
},
};
}
public App ()
{
MainPage = GetMainPage();
}
}
}
app
详细信息可能会略有不同。我们关心的该代码的一部分是:
return new ContentPage {
Content = new Label {
Text = "Hello, Forms!",
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.CenterAndExpand,
},
};
这在毛伊岛的工作。 (编译器警告说 layoutoptions.centerandexpand
被弃用;但是讨论这超出了此答案的范围。)
可重复使用的视图
如果您想引用XAML中其他地方的UI元素或代码,定义现有UI元素的子类。
感谢Paramjit指出的第一步是将适当的项目添加到项目中。对于 contentpage
,也就是:
右键单击project->添加 - >新项目 - > .net maui->
.NET MAUI ContentPage(C#)
for ContentView
(如下),该步骤是:
右键单击project->添加 - >新项目 - > .net maui->
.NET MAUI ContentView(C#)
源文件mycontentview.cs:
namespace MyViews
{
public class MyContentView : ContentView
{
public MyContentView {
//NO "InitializeComponent()" because doing it all in c#.
Content = new Label {
Text = "Hello, Maui!"
}
}
}
}
xaml中的用法:
<SomeClass ...
xmlns:myviews="clr-namespace:MyViews"
...>
...
<myviews:MyContentView ... />
</SomeClass>
在C#中用法作为C#标记的一部分:
using MyViews;
...
var page = new ContentPage {
Content = new MyContentView()
}
Advanced Advanced
subclassing content> ContentView
是在毛伊岛建立“自定义控制”的一种方法。
-
要定义自定义属性,请阅读有关“自定义视图”和“ Bindable Properties”的信息。 (我目前没有具体的链接。随时添加评论等链接。)
- 。
参见创建.net maui maps映射控制 。
更多信息
定义C#中的UI元素称为“ C#标记”。
请参阅在xamarin.forms.forms.forms.forms 中介绍C#markup 。
和 Xamarin社区工具包C#markup 。注意:不再需要提到的nuget 。
只需使用 $ add
和 $ concatrays
来解决此处的数据
db.collection.update({
id: 1
},
[
{
"$addFields": {
"txnAmt": <amount you want>
}
},
{
$addFields: {
balance: {
$add: [
"$balance",
"$txnAmt"
]
}
}
},
{
"$addFields": {
"transactions": {
"$concatArrays": [
"$transactions",
[
{
balance: "$balance",
transaction_amount: "$txnAmt"
}
]
]
}
}
},
{
"$unset": "txnAmt"
}
],
{
multi: true
})
是蒙哥游乐场供您参考。
存在以下问题:
-
_size
是一个实例属性,该属性是在__ INT __ INT __
函数中设置的。这意味着self._size
将参考该属性,而不是具有相同名称的类方法。这是您遇到的错误的原因。您应该对这两件事使用其他名称:整数大小的一个名称,而对于辅助功能的另一个名称将递归计算大小。我建议使用_sizerecur
作为助手方法的名称 - 并将在下一个点引用: -
self._sizerecur(self,0,0,self._root)
不应将self
作为参数传递,因为该参数已经通过这种类型的方法call语法获得self
的值(点表示法中的前缀作为该参数)。 -
如果current_node!= none
应该在其块中具有所有该代码的其余部分,否则current_node.left
在Current> Current_node 是
无
,导致错误。
-
尺寸未正确计算。实质上有两种实施此递归的方法,您的代码似乎都混合在一起,使其不正确:当您将当前大小作为参数传递给递归调用,而该调用将返回更新的值,您不应将其添加到您已经传递给它的原始尺寸中。通过这样做,您有双重计数。您应该将分配它回到您的变量(不添加到它),或(更好),而不是将当前的计数作为参数传递,而是让每个递归呼叫开始从0。
计数
这是一个校正,使现有 current_size
参数:
def size(self) -> int:
if self._root is None:
return 0
else:
return self._sizerecur(0, self._root) # don't pass self as arg
# A distinct name for this method
def _sizerecur(self, current_size, current_node):
if current_node:
current_size += 1
if current_node.left:
# don't ADD again to current size
current_size = self._sizerecur(current_size, current_node.left)
if current_node.right:
current_size = self._sizerecur(current_size, current_node.right)
return current_size
但是,如上所述,在没有 current_size
参数的情况下实现此递归函数是更好的做法。更深入的 recur recur em out 递归,而不是更新计数器:
def size(self) -> int:
if self._root is None:
return 0
else:
return self._sizerecur(self._root)
def _sizerecur(self, current_node):
current_size = 0
if current_node:
current_size = 1
if current_node.left:
current_size += self._sizerecur(current_node.left)
if current_node.right:
current_size += self._sizerecur(current_node.right)
return current_size
要包括图片,您无法使用本地路径。您需要使用 asset_img_url
媒体过滤器。
因此您的代码应该看起来像
<img class="hacken" src="{{'tick.png' | asset_img_url: 'original'}}" width="20" height="20" loading="lazy"/>
我不确定解决此问题的正确方法是什么,因为我也面临着同样的方法。但是到目前为止,我发现的是,可能会有一种解决这个问题的方法。
查看有关“ 禁用命令”,读取“模式”的文档,并注意CSS类” ck-disabled “
如果/我找到了一种工作方式,我将尝试回到这里并发布更好的解决方案
更新:
当我发现我在my_plugin_ui.js中缺少代码部分时,我为我解决了这个问题。
const command = editor.commands.get('nameOfCommand');
// Execute the command when the button is clicked (executed).
buttonView.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled');
错误清楚地告诉了发生了什么事
typeError:无法读取未定义的
的属性'findcustomer'
错误均值 abysionserationservice
是未定义的,并且您正在调用 findcustomer
in undefined。
这里
让组织服务:组织服务;
您创建一个未定义的变量。您需要先初始化它。
如果您内部有任何依赖性 anduransionsVice
,则需要注入该类对象。如果不只是 new Ansuranationservice()
将起作用
感谢您很好地提供示例输入。这是一种首先将桌子融化为长形式的方法,然后终止一个集体比以每月的平均年龄,然后在所有月份获得平均年龄。我认为,更多的月和几年列
#melt the wide table into a long table
long_df = df.melt(
id_vars=['c','z'],
var_name='date',
value_name='val',
)
#extract the year and month from the date column
long_df[['year','month']] = long_df['date'].str.split('-', expand=True)
long_df['year'] = long_df['year'].astype(int)
long_df['month'] = long_df['month'].astype(int)
#group by c/z/month and shift to get avg yoy for each month
avg_month_yoy = long_df.groupby(['c','z','month'])['val'].apply(
lambda v: v.sub(v.shift(1)).div(v.shift(1)).multiply(100).mean()
).reset_index()
#group by just c/z to get avg yoy over all months
avg_yoy = avg_month_yoy.groupby(['c','z'])['val'].mean()
#Add the avg_yoy back into the original table
df = df.set_index(['c','z'])
df['Avg_YoY_pct'] = avg_yoy
df = df.reset_index()
print(df)
输出
因此,首先我们需要了解一些术语。您比较Windows终端和 cmd.exe
,但实际上是两个完全不同的应用程序类型。 CMD是旧的Windows shell 。它在A 终端模拟器(又称终端)内运行。它可以在Windows中运行多个终端:
- 默认情况下,Windows 10中,它在Legacy Windows控制台主机中运行。这是Windows的近30年(也许更可能)旧终端。
- CMD还可以在Microsoft的 Windows终端内运行,可在Windows 10或Windows 11中安装。在Windows 11下,它可以成为Windows的默认终端。
当您要求Windows运行控制台/终端应用程序(例如Python CLI应用程序)时,Windows总是在默认终端运行它 - 在Windows 10下,始终是Windows Console Host。在Windows 11下,它可以是Windows控制台主机或Windows终端,具体取决于用户配置。
但是,还有其他多个终端可以在Windows中运行您的CLI Python应用程序:
一些更受欢迎的终端是:
- CONEMU
- CMDER
- MOBAXTERM
您可以在此博客文章。
因此,您的应用程序实际上不是在CMD中运行在Windows控制台主机(默认终端仿真器)下。
请注意,python也可以在其他外壳(PowerShell,WSL下的Linux shell,Nushell等)下运行。这些壳也可以在上面的任何端子中运行。或者您的Python CLI应用程序可以作为终端内部的顶级运行。
好的,现在我们已经建立了一些基础知识...
但是我想要一个更精细的GUI,例如Windows终端。
有点不清楚您的意思,但是除了试图打包Windows终端外,还有其他解决方案。传统控制台和Windows终端都应具有类似的功能 。 Windows Terminal添加了用户的标签之类的内容,但是您在应用程序中无法控制它。控制台主机和WT都可以使用相同的Windows字体配置。
您在Windows终端中执行的一件事是您无法在控制台主机中执行的一件事是为您的应用程序定义A profile ,包括主题,背景图像等。它在下面运行。也许这就是您的要求,但是您没有指定这些功能。
建议进行GUI
的任何方法
如果您想在Python创建GUI, 框架而不是作为CLI应用程序。您甚至可以在Python中编写终端模拟器,但这可能有点过分杀伤。
或一种用我的python程序将Windows终端捆绑的方法。
这可能不是一个好主意。 Windows Terminal将其安装为Microsoft Store应用程序(又称UWP,Modern等)时,最有效。不可能将Microsoft Store应用程序与另一个应用程序捆绑在一起;就像您无法从iOS上的另一个Apple App Store应用程序自动安装另一个Apple App Store应用程序一样。也可以以传统的 .exe
来安装/运行Windows终端,但这不是默认(或支持)方式。
您可以考虑以下内容:
-
让您的主要Python应用程序为“启动器”,该应用程序检查是否已安装Windows终端,也许是通过寻找
wt.exe
。 P> -
如果安装了Windows终端:
-
如果未安装Windows终端:
- 建议用户安装它。打开Microsoft Store链接到它。
- 如果他们选择不这样做,您的启动器仍应启动应用程序的CLI部分 - Windows将使用默认终端,该终端应为Windows Console Host。
-
提供用于运行CLI部分的说明(无发射器),以便其他终端模拟器的用户可以在其首选环境中运行它。
您描述的方式,必须将逗号分隔的值分为行。
我不确定您的意思是说某人的房间编号真的可以是 1234,5678
,但是 - 您可能会这样做;这就是联合所有查询的一部分。
select *
from students s
where s.room_number in (-- split string into rows, i.e. separate '1234,5678' to
-- '1234' and '5678'
select regexp_substr(t.string, '[^,]+', 1, column_value)
from other_table t cross join
table(cast(multiset(select level from dual
connect by level <= regexp_count(t.string, ',') + 1
) as sys.odcinumberlist))
union all
-- this is a value you have in that other table "as is"
-- (i.e. '1234,5678')
select t.string
from other_table t
);
您可以做这样的事情:
change xs ys = [v | vs <- transpose [xs, ys], v <- vs]
但是我不会。这是编写此功能的一种非常令人困惑的方法 - 无论如何,您并没有真正将手动递归转换为以这种方式理解列表,您只是将手动递归推入 transpose
。
当您收到的错误消息仅列出一个搜索路径时,JNA实际上检查了您的库的多个位置。如:
搜索给定库将扫描以下位置:
jna.library.path
用户可定制路径jna.platform.library.path
平台特定路径- 在OSX上,
〜/library/Frameworks
,/library/Frameworks
和/system/library/frameworks
将被搜索带有框架
名称与所请求的相对应。框架的绝对路径是
也接受了,要么以框架名称结尾(sans“ .framework”)
或框架共享库的完整路径(例如
coreservices.framework/coreservices)。- 上下文类加载程序类路径。可以在
$ {os-prefix}/library_filename
的基础路径上安装部署的本机库
其中$ {OS-PREFIX}
是OS/ARCH前缀返回的
platform.getNativelibraryResourceprefix()
。如果捆绑在罐子文件中,
该资源将提取到jna.tmpdir
用于加载,然后再提取
删除(但仅当jna.nounpack
是false或不设置时)。您可以设置系统属性
jna.debug_load = true
制作JNA
将其库搜索的步骤打印到控制台。
请注意上面项目4中的 OS-PREFIX
目录。您已将库直接包含在classPath(从注释,/users/username/downloads/testjna/src/src/main/java/test.dylib
)上包含。但是,正如错误消息所述,它需要在您的classPath上的 darwin-x86-64/
目录中,例如,/users/username/downloads/testjna/src/main// java/darwin-x86-64/test.dylib
;
您可能希望使用 src/main/resources
优先使用 java
非Java代码的子目录。
您将系统库路径设置为原始源代码目录的尝试不适用于在 target/class/class
目录结构中查看的编译代码。
请注意,您可以通过设置系统属性 jna.debug_load = true
来获取进一步的调试信息。
尝试:
=REGEXMATCH(B2&"", "^"&TEXTJOIN("$|^", 1,
FILTER(INDIRECT("Sheet2!A2:A"), INDIRECT("Sheet2!E2:E")<>""))&"$")
这应该是更快的
输出:
其他选项是使用
Merge
我过度复杂...实际上,这种方式更加简单
This should be faster
Output:
Other option is to use
merge
I was overcomplicating... actually, this way is much more straightforward
什么是pandas中每个组中特定值的发生,过滤和计算特定值的有效方法?