0 / 0 / 0
Регистрация: 30.11.2021
Сообщений: 29

Как передавать значения переменной в другой модуль без запуска первого?

28.12.2025, 21:11. Показов 453. Ответов 3

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#main.py
from PyQt5 import QtCore, QtGui, QtWidgets
from loginform import Ui_MainWindow
import sys
import pickle
import os.path
import subprocess
 
alt = 12
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
 
        proverka = os.path.exists('user_data.txt')
 
        #Функции
        def on_click_login ():
            if proverka == True : #Проверка на регистрацию
                global loginP, passwordP,login,password
                login = self.ui.lineEdit.text()
                password = self.ui.lineEdit_2.text()
                if login == loginP and password == passwordP : #Проверка на правильность данных
                    print('Данные верны !')
                    subprocess.call(['python', 'main_form.py'])
                else:
                    print('Данные не верны')
            else : 
                print('Вы не зарегистрированны !')
 
        def on_click_register ():
            func_to_create_file_data()
        
        def func_to_create_file_data():
            global login,password
            login = self.ui.lineEdit.text()
            password = self.ui.lineEdit_2.text()
            user_data = {'Логин': login, 'Пароль': password}
            file1 = open('user_data.txt', 'wb')
            pickle.dump(user_data,file1)
        
        def func_to_read_file_data ():
            try:
                global data_to_load,loginP,passwordP
                file1 = open('user_data.txt', 'rb')
                data_to_load = pickle.load(file1)
                file1.close()
                loginP = data_to_load['Логин']
                passwordP = data_to_load['Пароль']
            except:
                print('Файл пока не создан')
 
        func_to_read_file_data()
 
        #Реакции
        self.ui.pushButton.clicked.connect(on_click_login)
        self.ui.pushButton_2.clicked.connect(on_click_register)
 
app = QtWidgets.QApplication([])
application = mywindow()
application.show()
 
sys.exit(app.exec())
Это основная программа.
Передаю значение в другой модуль вот так:
Python
1
2
import main 
print(main.alt)
И получается так что, он сперва запускает кож мейн на выполнение и появляется GIU вход, а код print(main.alt) - вообще не выполняется. Знаю команду if __name__ == 'main' :, но неужели ее нужно вставить прямо перед всем кодом main ? Хочу сделать базу данных, чтобы переменные ходили туда сюда, между модулями ...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2025, 21:11
Ответы с готовыми решениями:

Как передавать переменную из одного класса в другой
Есть код, в нем мне надо передать 1. Все из Terrain в Tile и 2. Передать width и height из Terrain....

Как узнать тип аргумента, передаваемый функции неизвестному модулю из dll
Ребята, помогите. В Питоне я полный ноль, но не в программировании. И задумал облегчить себе жизнь...

Как передавать данные с одной страницы в другую?
Есть сайт, в определенной части данного сайта отображаются названия загруженных вордовских файлов,...

3
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
29.12.2025, 21:21
Не мыслите модулями, мыслите классами. Не используйте глобальные переменные. Используйте import. И ответьте на вопрос, что помешает юзеру выполнить python main_form.py самостоятельно, без авторизации.
1
0 / 0 / 0
Регистрация: 30.11.2021
Сообщений: 29
02.01.2026, 21:25  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sqlite3
 
class Database :
    def create_database(self,name):
        try :
            self.sqlite_connection = sqlite3.connect(name)
            self.cursor = self.sqlite_connection.cursor()
            print('База данных создана !')
            self.cursor.close()
        except sqlite3.Error as error :
            print('Не смог подключиться к базе данных !', error)
        finally :
            self.sqlite_connection.close()
            print('Закрыл базу данных')
 
users_data = Database()
users_data.create_database('users.db')
Огромное спасибо за совет, мыслить классами...
Я начал разбираться в них лучше
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
04.01.2026, 18:13
Уже лучше, хотя до нормальности ещё далеко.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2026, 18:13
Помогаю со студенческими работами здесь

Запустить одну и ту же программу на двух компьютерах, чтобы одна другой передавала число 100 раз подряд
Здравствуйте. Мне нужно запустить одну и ту же программу на двух компах, что бы одна другой...

Необходимо собрать проект со всеми библиотеками в одну папку, чтобы можно было его передавать на другие ПК.
Python 3.4, GUI wxPython. Необходимо собрать проект со всеми библиотеками в одну папку, чтобы...

Как передавать значения между окнами
Есть список есть, окно которое должно открываться при нажатии на элемент в окне есть Line Edit ....

Как передавать значения между окнами
Доброго времени суток.Столкнулся с проблемой,есть список по нажатию элемента открывается новое ...

Как правильнее вызывать метод(стоит ли указывать, каким параметрам передавать значения)?
@staticmethod def _create_table( columns: str, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru