RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-375729

Николай Смирнов's questions

Martin Hope
Николай Смирнов
Asked: 2022-09-05 00:41:26 +0000 UTC

如何使用带有 TabBar 的 Shell 全屏打开新页面?

  • 0

大家好!通常,我在 Xamarin 中创建电话应用程序时使用 Shell。AppShell.xaml 页面包含一个 TabBar,其中包含页面的 ShellContent(Page1、Page2)。有必要这样做,以便在按下按钮时,在其中一个页面 (Page1) 上转换到另一个页面 (Page3),并且该页面像全屏一样打开(TabBar 不可见)。

PS 作为参考:在银行应用程序(Tinkoff 或 Sberbank)中,底部有一个 TabBar,当您点击卡或帐户时,带有 TabBar 的页面会被新页面完全隐藏。

目前,当单击按钮时,Page3 替换 Page1,并且 TabBar 不会消失。尝试写入 App.xaml.cs MainPage=new NavigationPage( new AppShell());,但它不起作用,只是加载了黑屏。

现在如何实施:

AppShell.xaml(上面没有废话)

 <Shell>
 <TabBar >
    <ShellContent Route="Page1"
                  Title="Page1"
                  Icon="icon_vehicle.png"
                  ContentTemplate="{DataTemplate clientv:Page1}" />
    <ShellContent Route="Page2"
                  Title="Page2"
                  Icon="icon_bookings.png"
                  ContentTemplate="{DataTemplate clientv:Page2}" />
</TabBar>
</Shell>

应用程序.xaml.cs

 public partial class App : Application
 {
    public App()
    {
        InitializeComponent();
        MainPage = new AppShell();
    }
 }

Page1.xaml

<ContentPage>
   <StackLayout>
      <Button  Clicked="Button_Clicked"/>
   </StackLayout>
</ContentPage>

Page1.xaml.cs

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class Page1 : ContentPage
{
    public Page1()
    {
        InitializeComponent();
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        Shell.Current.GoToAsync(nameof(Page3));
    }
}
xamarin
  • 3 个回答
  • 10 Views
Martin Hope
Николай Смирнов
Asked: 2022-04-25 18:03:08 +0000 UTC

SQLite。LoadExtension() 不加载模块 mod_spatialite.dll

  • 2

你好!

任务:需要在 C# 应用程序 (WPF .NetFramework 4.8) 中将几何体从空间 SQLite 数据库提取到 Spatialite。为此,我SELECT AsText(geometry)对数据库记录运行一个命令。

问题出在哪里:为了执行 AsText(),需要通过 LoadExtension() 将 Spatialite 模块连接到 SQLite,我做不到。

尝试通过connection.LoadExtinsion("mod_spatialite") 错误:(System.Data.SQLite.SQLiteException: "SQL logic error Не найден указанный модуль."虽然模块在应用程序文件夹中,但我也尝试指定它的路径 - 问题并没有消失)

试command.CommandText = "SELECT load_extension(\'mod_spatialite\')"; 错:(System.Data.SQLite.SQLiteException: "SQL logic error not authorized"虽然connection.EnableExtensions(true);是注册的,而且在sqlite3.exe中,PS里写过,没有报错)

    private void test()
        {
            var connectionStr = new SQLiteConnectionStringBuilder()
            {
                DataSource = "polygonSpat.sqlite"
            }.ToString();
            using (var connection = new SQLiteConnection(connectionStr))
            {
                connection.Open();
                var command = connection.CreateCommand();
                connection.EnableExtensions(true);
                connection.LoadExtension("mod_spatialite.dll");
                //command.CommandText = "SELECT load_extension(\'mod_spatialite\')";
                //command.ExecuteNonQuery();

                command.CommandText = "select AsText(geometry) from kek ";

                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine(reader[0]);
                    }
                }
            }
        }

尝试使用 System.Data.SQLite 和 Microsoft.Data.Sqlite。

PS从这里下​​载spatialite-loadable-modules-5.0.0-win-amd64.7z,它有sqlite3.exe,它可以毫无问题地加载mod_spatialiteSELECT load_extension(\'mod_spatialite\')并执行AsText()。我还在那里使用了 spatialite_gui,它可以正常工作。

PPS我试着按照这个指令自己组装它,但是 MSYS2 没有更新,没有更新它就不想工作。我还需要在其他 PC 上运行我的应用程序,并且我不想每次都在其他 PC 上构建库,所以这个选项不适合,但是,它可能需要构建一次......反过来,spatial_gui证明一切都应该更容易。

PPPS没有空间标签,这很令人沮丧。[UPD:有标签)]

c#
  • 1 个回答
  • 10 Views
Martin Hope
Николай Смирнов
Asked: 2022-01-25 21:32:03 +0000 UTC

PyQt5。根据包含的文本行数调整 QPlainTextEdit 高度

  • 2

我在这里领悟PyQt5,我写一个聊天。我需要设置消息小部件的样式。

问题是什么:用户缩小聊天窗口,消息小部件随之缩小,分别位于不可编辑的文本QPlainTextEdit,消息自动换行到下一行,即高度增长,消息小部件本身不会扩展,并且QPlainTextEdit出现滚动,但它应该使滚动不会出现,而是QPlainTextEdit根据其中文本的高度(或行数)增加(和减少)其高度。

在图片上:

  • 窗口的初始位置(我们可以看到,消息的高度不适应): 如我们所见,帖子高度不适应

  • 缩小窗口(我们可以看到,消息的最后一行是隐藏的): 我们可以看到,消息的最后一行被隐藏了

我尝试了什么:

  • 我连接了documentSizeChanged来自 documentLayout 的信号,并根据文档的高度增加或减少了消息的高度。但是,在编辑时会出现此信号QPlainTextEdit,对我来说它只显示文本。连接到documentSizeChanged: txtMessageText.document().documentLayout().documentSizeChanged.connect(self.on_documentSize_changed)

我看不出插入插槽代码的意义,因为这个信号无论如何都不起作用。

  • 我挂上了信号 rangeChanged yverticalScrollBar并根据滚动条的最大值增加或减少消息的高度,但是,使用这种方法,如果窗口扩展到全屏,则消息不会改变其大小。

连接到rangeChanged: txtMessageText.verticalScrollBar().rangeChanged.connect(self.on_range_changed)

插槽on_range_changed:

    @pyqtSlot(int, int)
    def on_mod_changed(self, min_, max_):
        # нашел виджет сообщения
        parent = self.sender().parent().parent().parent().parent().parent().parent()
        # изменяю размер пока так: 
        # (к сообщению добавляется пустая строка, которая будет скрыта, 
        #  то есть постоянно пытаюсь сохранить максимальное значение равным 1 (max_==1))
        if max_>1:
            parent.setMinimumSize(parent.minimumWidth(), parent.minimumHeight() + 25)
            parent.setMaximumSize(parent.maximumWidth(), parent.minimumHeight() + 25)
        elif max_<1:
            parent.setMinimumSize(parent.minimumWidth(), parent.minimumHeight() - 25)
            parent.setMaximumSize(parent.maximumWidth(), parent.minimumHeight() - 25)

你将如何在PyQt5QPlainTextEdit中进行高度适应?

升级版。这是一个最小的例子:

    from PyQt5 import QtCore, QtGui, QtWidgets
    
    
    class Ui_Client(object):
        def setupUi(self, Client):
            Client.setObjectName("Client")
            Client.resize(522, 228)
            Client.setStyleSheet("QMainWindow{\n"
    "background-color: #29334A;\n"
    "}\n"
    "\n"
    "QFrame {\n"
    "background-color: #29334A;\n"
    "}\n"
    "\n"
    "QLabel {\n"
    "color: #E8EAF1;\n"
    "font-size:24px\n"
    "}\n"
    "\n"
    "QPlainTextEdit {\n"
    "color: #E8EAF1;\n"
    "}\n"
    "\n"
    "")
            self.centralwidget = QtWidgets.QWidget(Client)
            self.centralwidget.setMinimumSize(QtCore.QSize(0, 6))
            self.centralwidget.setObjectName("centralwidget")
            self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget)
            self.verticalLayout_2.setObjectName("verticalLayout_2")
            self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
            self.scrollArea.setWidgetResizable(True)
            self.scrollArea.setObjectName("scrollArea")
            self.scrollAreaWidgetContents = QtWidgets.QWidget()
            self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 502, 408))
            self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
            self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
            self.verticalLayout_3.setObjectName("verticalLayout_3")
            self.frame_2 = QtWidgets.QFrame(self.scrollAreaWidgetContents)
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
            self.frame_2.setSizePolicy(sizePolicy)
            self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
            self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
            self.frame_2.setObjectName("frame_2")
            self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame_2)
            self.horizontalLayout.setObjectName("horizontalLayout")
            self.frame = QtWidgets.QFrame(self.frame_2)
            self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
            self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
            self.frame.setObjectName("frame")
            self.verticalLayout = QtWidgets.QVBoxLayout(self.frame)
            self.verticalLayout.setContentsMargins(0, 0, 0, 0)
            self.verticalLayout.setObjectName("verticalLayout")
            self.label = QtWidgets.QLabel(self.frame)
            self.label.setObjectName("label")
            self.verticalLayout.addWidget(self.label)
            self.plainTextEdit = QtWidgets.QPlainTextEdit(self.frame)
            self.plainTextEdit.setReadOnly(True)
            self.plainTextEdit.setObjectName("plainTextEdit")
            self.verticalLayout.addWidget(self.plainTextEdit)
            self.label_2 = QtWidgets.QLabel(self.frame)
            self.label_2.setObjectName("label_2")
            self.verticalLayout.addWidget(self.label_2)
            self.horizontalLayout.addWidget(self.frame)
            spacerItem = QtWidgets.QSpacerItem(197, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
            self.horizontalLayout.addItem(spacerItem)
            self.verticalLayout_3.addWidget(self.frame_2)
            spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
            self.verticalLayout_3.addItem(spacerItem1)
            self.scrollArea.setWidget(self.scrollAreaWidgetContents)
            self.verticalLayout_2.addWidget(self.scrollArea)
            Client.setCentralWidget(self.centralwidget)
    
            self.retranslateUi(Client)
            QtCore.QMetaObject.connectSlotsByName(Client)
    
        def retranslateUi(self, Client):
            _translate = QtCore.QCoreApplication.translate
            Client.setWindowTitle(_translate("Client", "Client"))
            self.label.setText(_translate("Client", "Имя Пользователя"))
            self.plainTextEdit.setPlainText(_translate("Client", "11111111111111111111111111111111111111111222222222222222222222222222222222222222223333333333333333333333333333333333333333344444444444444444444444444444444444444444555555555555555555555555555555555555555556666666666666666666666666666666666666666677777777777777777777777777777777777777777888888888888888888888888888888888888888889999999999999999999999999999999999999999910101010101010101010101010101010101010101"))
            self.label_2.setText(_translate("Client", "Дата  Время"))
    
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        Client = QtWidgets.QMainWindow()
        ui = Ui_Client()
        ui.setupUi(Client)
        Client.show()
        sys.exit(app.exec_())

其中会发生什么:当应用程序窗口变窄时,会QPlainTextEdit出现滚动,并且隐藏了部分文本,但是您需要确保消息的高度随着QPlainTextEdit.

python
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5