رفتن به مطلب
جامعهٔ برنامه‌نویسان مُدرن ایران
سید حامد

وارد کردن متغییر از فایل پایتون به فایل qml


پست های پیشنهاد شده

سلام.

من یه برنامه با پایتون 3 و کتابخانه pyqt5 و پایگاه داده اسکیولایت خود پایتون نوشتم.

تو بخش مدیریت حساب های کاربری برنامه ( تو فایل پایتون برنامه ):

اگر کاربری وجود داشته باشه تو پایگاه داده اسکیولایتم >> user_mode = 1

اگر کاربری موجود نباشه آنگاه >> user_mode = 0

یه دستور (if) تو qml نوشتم و گفتم اگه مقدار user_mode برابر 1 بود فایل inter_account.qml تو mainwindow.qmlنمایش داده بشه و اگر مقدار 0 بود فایل create_account.qml نمایش داده بشه.

1- من میخوام از تو فایل qml متغیر user_mode تو فایل پایتون را فراخوان کنم. چطوری باید این کارو انجام بدم? یا شاید هم باید از تو فایل پایتون متغیر تو qml رو بازنویسی کنم؟

2- وقتی تو دستور (if) در فایل qml یه پنجره رو صدا میزنم برا باز شدن یه خطا میده:

    property var vopf: 0

    function start(){
        if (vopf == 0){
            console.log(vopf)
        }
        else{
            console.log("bb")
            Wellcome {
                id: wellcome
            }
        }
    }
    Button{
        text: "test"
        onClicked: start()
    }

 

اینم خطا ها

QML debugging is enabled. Only use this in a safe environment.
QQmlApplicationEngine failed to load component
qrc:/main.qml:24 Expected token `,'

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام.

شما نمیتونین در QML در قسمت های اسکریپتی، مثل بدنه توابع جاوا اسکریپت یا داخل سیگنال ها به صورتی که مثال زدین شی درست کنین.

کاری که میتونین بکنین این هستش که صفحه خوش‌آمد گویی رو بسازین ولی خاصیت visibleرو غیرفعال کنین و زمانی که در پایگاه داده اطلاعات شخص رو پیدا نکردین، خاصیت یاد شده رو فعال کنین تا صفحه خوش‌آمدگویی نمایش داده شه.

اگر از لحاظ حافظه در تنگنا هستین، به منظور ایجاد شی در درون ناحیه اسکریپتی چنانچه از انواع خود Qt باشند میبایست از تابع createQmlObject استفاده کنین:

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Window 2.12

Window {
    id: mainWindows
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button{
        id: blueSquare
        anchors.centerIn: parent
        anchors.horizontalCenterOffset: -100
        text: "Blue Square"
        onClicked: Qt.createQmlObject("import QtQuick 2.12; Rectangle {color: \"Blue\"; y: 50; width: 100; height: 100}", blueSquare);
    }
    Button{
        id: yellowSquare
        anchors.centerIn: parent
        anchors.horizontalCenterOffset: 100
        text: "Yellow Square"
        onClicked: Qt.createQmlObject("import QtQuick 2.12; Rectangle {color: \"Yellow\"; y: 50; width: 100; height: 100}", yellowSquare);
    }
}

از اونجایی که Welcome.qml رو خودتون نوشتین چنانچه بخواین به شکل پویا ازش نمونه بسازین باید به این شکل عمل کنین:

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Window 2.12

Window {
    id: mainWindows
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button{
        id: welcom
        anchors.centerIn: parent
        text: "Welcome Button"
        onClicked:{
            var component = Qt.createComponent("Welcome.qml");
            component.createObject(welcom, { y: 50, width: 100, height: 100});
        }
    }
}

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...