日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

端口映射+物理机、虚拟机互访+Pyqt5、Gui图形化界面+Mysql数据库

發布時間:2024/1/1 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 端口映射+物理机、虚拟机互访+Pyqt5、Gui图形化界面+Mysql数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、背景

1.1、要求

1.2、說明

1.2.1、環境

二、步驟詳解

2.1、在linux下安裝mysql數據庫,并能通過localhost/phpmyadmin登錄,用戶名密碼均設為root

2.2、新建一個數據庫命名為xxx,在數據庫xxx新建table數據表t1,在表t1中新建字段n1,n2,n3,分別在字段中插入不同的數值(數字,字符,日期等類型),可自行設計一個數據庫,比如你的班級學生的姓名,年齡,學號,性別等

2.3、授權遠程登錄,將linux下的mysql數據庫的3306端口映射至windows下3307口,實現局域網中遠程訪問虛擬機中mysql數據庫

2.4、備份數據庫后,刪除數據庫,再恢復數據庫

2.5、windows開啟mysql數據庫,windows linux實現互訪

2.6、利用python/java/php或其它語言,控制mysql數據庫的操作。(登錄,刪除或增加數據)

三、運行結果

3.1、登錄頁面

3.2、主頁面

四、完整源碼


一、背景

1.1、要求

1) 在linux下安裝mysql數據庫,并能通過localhost/phpmyadmin登錄,用戶名密碼均設為root 2) 新建一個數據庫命名為xxx,在數據庫xxx新建table數據表t1,在表t1中新建字段n1,n2,n3,分別在字段中插入不同的數值(數字,字符,日期等類型),可自行設計一個數據庫,比如你的班級學生的姓名,年齡,學號,性別等 3) 授權遠程登錄,將linux下的mysql數據庫的3306端口映射至windows下3307口,實現局域網中遠程訪問虛擬機中mysql數據庫 4) 備份數據庫后,刪除數據庫,再恢復數據庫 5) 選作項:windows開啟mysql數據庫,windows linux實現互訪。 6) 選作項:利用python/java/php或其它語言,控制mysql數據庫的操作。(登錄,刪除或增加數據)

1.2、說明

1.2.1、環境

物理機:windows 10虛擬機:ubuntu 網絡連接:個人熱點數據庫:mysql 8.0界面:pyqt5

二、步驟

以下內容均需聯網:

2.1、在linux下安裝mysql數據庫,并能通過localhost/phpmyadmin登錄,用戶名密碼均設為root

1)安裝:sudo apt-get install mysql-server(只下載,不設定密碼)

2)查看密碼(使用默認的root用戶即可,使用不用修改用戶名,修改系統給的初始密碼即可):sudo cat /etc/mysql/debian.cnf-->查看系統初始賬號和密碼

3)本地訪問:sudo mysql -u root -p (登錄數據庫,指定root用戶,使用密碼登錄,這時需要輸入當前操作系統用戶的密碼,然后要輸入登錄數據庫的密碼,使用之前查看.cnf的文件內容即可)

注意點:8.0版本的mysql數據庫的字段改了,使用update修改密碼會報語法錯誤

要先進入到mysql數據庫:use mysql;

修改密碼sql語句:alter?user 用戶名 identified?by '密碼';

刷新:flush privileges;

說明:若下載mysql數據庫時出現報錯,找不到依賴源,可以使用命令行執行更新軟件源:

root@xiawoei-virtual-machine:/home# apt-get update

最后的辦法:把ubuntu的操作系統刪了,重新安裝然后在下載(這個過程大概需要半個小時左右),在次下載就不會報錯了;

2.2、新建一個數據庫命名為xxx,在數據庫xxx新建table數據表t1,在表t1中新建字段n1,n2,n3,分別在字段中插入不同的數值(數字,字符,日期等類型),可自行設計一個數據庫,比如你的班級學生的姓名,年齡,學號,性別等

1)增

新建庫:create database 數據庫名稱;

create database wlw ;

新建庫:create database 數據庫名稱;

create database wlw ;

插入數據:insert into 表名(變量1,變量2,變量n) values(值1,值2,值n);

insert into t1(n1,n2,n3) ?values(1,’1’,2020);

插入數據類型命令:alter table 表名 add 字段 數據類型

alter table t1?add n1?char;

2)刪

刪庫:drop database 庫名;

刪表:drop table 表名;

刪除表中數據命令: 如:刪除表中編號為1的記錄 delete from 表名 where id=1;

刪除一個字段命令: alter table 表名 drop 字段名;

清空表內數據命令: delete from 表名;(數據全空)

3)改

修改表名: alter table 表名 rename to 新表名;

修改字段: alter table 表名 change 原字段名 新字段名 數據類型;

修改數據類型命令: alter table 表名 modify 字段名 新數據類型;

4)查

查表全部數據:select * from 表名;

查看相關類型數據命令: select 字段,字段 from 表名;

查看表結構:desc 表名;

2.3、授權遠程登錄,將linux下的mysql數據庫的3306端口映射至windows下3307口,實現局域網中遠程訪問虛擬機中mysql數據庫

1)虛擬機開啟訪問權限

配置虛擬機訪問權限:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 文件

找到這兩行,改成這樣:

bind-address??????????? = *
mysqlx-bind-address???? = *

按下Esc,:wq(保存退出)

查看是否配置成功:sudo netstat -an|gerep 3306

防火墻允許端口訪問:sudo ufw allow 3306(管理員權限)

防火墻關閉:

配置數據庫訪問權限:先訪問數據庫-->sudo mysql -uroot -proot

查看mysql數據庫的user表中的user,host字段

?%代表全部都可以訪問;

更新訪問權限命令:grant all privileges on *.* to root@"%" identified by "root" with grant option;

刷新:flush privileges;

2)物理機開啟端口監聽與轉發

配置數據庫訪問權限:

1、登錄mysql:mysql -u用戶名 -p密碼

2、切換數據庫:use mysql;

3、查看權限:select user,host from user;

4、更新權限:grant all privileges on *.* to root@"%" identified by "root" with grant option;

配置端口監聽:

#端口轉發
netsh interface portproxy add v4tov4 listenaddress=本地IP地址 listenport=物理機端口 connectaddress=虛擬機IP地址 connectport=虛擬機端口號

#查看配置
netsh interface portproxy show v4tov4
#刪除
netsh interface portproxy delete v4tov4 listenaddress=本地IP地址 listenport=物理機端口

配置成功如下:

3)關物理機和虛擬機防火墻

關linux防火墻:

命令行執行:sudo ufw enable(需要切換到root用戶才行,sudo -i 然后輸入當前用戶的密碼可以暫時進入到root用戶,假如不記得root密碼又不會改)

關windows防火墻:

?把出現的三個防火墻全關了;

驗證端口映射的遠程連接:

windows命令行連接:mysql -P端口號 -h本地地址 -u用戶名 -p密碼

2.4、備份數據庫后,刪除數據庫,再恢復數據庫

命令行下執行:

備份:mysqldump -u root -p 庫名>保存的路徑

刪除:drop database 庫名;

還原:mysql?-u root -p 庫名 < 保存的路徑

2.5、windows開啟mysql數據庫,windows linux實現互訪

1)windows創建數據庫,linux創建數據庫

2)linux開啟3306端口,并允許訪問3306端口

3)linux數據庫開啟訪問權限

4)windows數據庫開啟訪問權限

5)連接命令

命令行:mysql -h連接的IP -u數據庫用戶 -p用戶密碼

示例:windows要連接虛擬機的數據庫,虛擬機IP為192.168.43.44,虛擬機數據庫用戶為root,密碼為root,物理機IP為192.168.43.197(物理機與虛擬機要在同一個網段)

命令為:msyql -h192.168.43.44 -uroot -proot

2.6、利用python/java/php或其它語言,控制mysql數據庫的操作。(登錄,刪除或增加數據)

完整代碼放在最后。

三、運行結果

3.1、登錄頁面

3.2、主頁面

四、完整源碼

import pymysql import timefrom PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QMessageBox from PyQt5.QtGui import QPixmap,QIcon import sysfrom PyQt5 import QtCore, QtGui, QtWidgets import sys from PyQt5.QtWidgets import QApplication, QMainWindowclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(800, 600)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setStyleSheet("background-image: url(./3.jpg);")self.centralwidget.setObjectName("centralwidget")self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)self.tableWidget.setGeometry(QtCore.QRect(0, 0, 341, 351))self.tableWidget.setObjectName("tableWidget")self.tableWidget.setColumnCount(2)self.tableWidget.setRowCount(7)item = QtWidgets.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(1, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(2, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(3, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(4, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(5, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(6, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setHorizontalHeaderItem(0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setHorizontalHeaderItem(1, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setItem(0, 0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setItem(0, 1, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setItem(1, 0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setItem(1, 1, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setItem(2, 0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setItem(2, 1, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setItem(3, 0, item)self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(460, 290, 101, 51))self.pushButton.setObjectName("pushButton")self.tableWidget_2 = QtWidgets.QTableWidget(self.centralwidget)self.tableWidget_2.setGeometry(QtCore.QRect(10, 360, 331, 121))self.tableWidget_2.setObjectName("tableWidget_2")self.tableWidget_2.setColumnCount(2)self.tableWidget_2.setRowCount(1)item = QtWidgets.QTableWidgetItem()self.tableWidget_2.setVerticalHeaderItem(0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget_2.setHorizontalHeaderItem(0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget_2.setHorizontalHeaderItem(1, item)item = QtWidgets.QTableWidgetItem()self.tableWidget_2.setItem(0, 0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget_2.setItem(0, 1, item)self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_2.setGeometry(QtCore.QRect(460, 360, 101, 61))self.pushButton_2.setObjectName("pushButton_2")self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_3.setGeometry(QtCore.QRect(460, 220, 101, 51))self.pushButton_3.setObjectName("pushButton_3")self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_4.setGeometry(QtCore.QRect(460, 440, 101, 61))self.pushButton_4.setObjectName("pushButton_4")self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_5.setGeometry(QtCore.QRect(460, 120, 91, 61))self.pushButton_5.setObjectName("pushButton_5")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "主界面"))item = self.tableWidget.verticalHeaderItem(0)item.setText(_translate("MainWindow", "1"))item = self.tableWidget.verticalHeaderItem(1)item.setText(_translate("MainWindow", "2"))item = self.tableWidget.verticalHeaderItem(2)item.setText(_translate("MainWindow", "3"))item = self.tableWidget.verticalHeaderItem(3)item.setText(_translate("MainWindow", "4"))item = self.tableWidget.verticalHeaderItem(4)item.setText(_translate("MainWindow", "5"))item = self.tableWidget.verticalHeaderItem(5)item.setText(_translate("MainWindow", "6"))item = self.tableWidget.verticalHeaderItem(6)item.setText(_translate("MainWindow", "7"))item = self.tableWidget.horizontalHeaderItem(0)item.setText(_translate("MainWindow", "id"))item = self.tableWidget.horizontalHeaderItem(1)item.setText(_translate("MainWindow", "name"))__sortingEnabled = self.tableWidget.isSortingEnabled()self.tableWidget.setSortingEnabled(False)self.tableWidget.setSortingEnabled(__sortingEnabled)self.pushButton.setText(_translate("MainWindow", "添加數據"))item = self.tableWidget_2.verticalHeaderItem(0)item.setText(_translate("MainWindow", "1"))item = self.tableWidget_2.horizontalHeaderItem(0)item.setText(_translate("MainWindow", "id"))item = self.tableWidget_2.horizontalHeaderItem(1)item.setText(_translate("MainWindow", "name"))__sortingEnabled = self.tableWidget_2.isSortingEnabled()self.tableWidget_2.setSortingEnabled(False)self.tableWidget_2.setSortingEnabled(__sortingEnabled)self.pushButton_2.setText(_translate("MainWindow", "顯示數據"))self.pushButton_3.setText(_translate("MainWindow", "刪除數據"))self.pushButton_4.setText(_translate("MainWindow", " 修改數據"))self.pushButton_5.setText(_translate("MainWindow", "清空頁面"))self.pushButton.clicked.connect(self.add) # 添加self.pushButton_2.clicked.connect(self.show) # 顯示self.pushButton_3.clicked.connect(self.delete) # 刪除self.pushButton_4.clicked.connect(self.modify) # 修改self.pushButton_5.clicked.connect(self.clear) # 清空# 添加函數def add(self):conn = pymysql.connect(host='127.0.0.1',user='root',password='root',port=3309,db='wlw',cursorclass=pymysql.cursors.DictCursor)cur = conn.cursor()print("進入成功1")id = self.tableWidget_2.item(0, 0).text()# 將輸入用的表的第0行第0列的所輸入在上面的數據賦值給id變量(計算機默認從0開始)name = self.tableWidget_2.item(0, 1).text() # 將第0行第1列所輸入的數據賦值給namesql = "INSERT INTO t1 (id,name) VALUES ('{}','{}')".format(id, name)# insert into添加的數據即為賦值后id和name的值cur.execute(sql) # 執行SQL語句conn.commit() # 即connection.commit,上傳有效數據self.clear() # 執行自定義的清空函數# self.show() # 執行自定義的顯示當前數據庫數據的函數# show顯示函數def show(self):conn = pymysql.connect(host='127.0.0.1',user='root',password='root',port=3309,db='wlw',cursorclass=pymysql.cursors.DictCursor)cur = conn.cursor()print("進入成功2")sql = "select * from t1"cur.execute(sql)data = cur.fetchall() # 獲取到的數據以元組的形式賦值給dataprint(data) # 查看數據是什么類型list_data = [] # 存id和name值all_id = [0, 0, 0, 0] # 接收idall_name = [0, 0, 0, 0] # 接收name# 接收到的數據長度(返回的數據是鍵值對)是多少就執行多少次,提取多少次for x in range(0, len(data)):all_id[x] = data[x].get('id') # data[x]獲取每一個鍵值對,獲取后提取每一個鍵值對的id值all_name[x] = data[x].get('name') # 同上邏輯list_data.append(all_id[x]) # 把數據添加到一個元組,分別操作數據time.sleep(0.3) # 延時有沒有無所謂list_data.append(all_name[x])print(list_data) # 輸出數據,查看是否符合num_id = 0num_name = 1for i in range(len(data)): # 遍歷# for j in range(len(data[i])):for j in range(2):# 設置idif j == 0:one_item = QtWidgets.QTableWidgetItem(str(list_data[num_id]))num_id += 2self.tableWidget.setItem(i, j, one_item)# 設置nameelse:two_item = QtWidgets.QTableWidgetItem(str(list_data[num_name]))num_name += 2self.tableWidget.setItem(i, j, two_item)# item = QtWidgets.QTableWidgetItem(str(data[i][j]))# self.tableWidget.insertRow(int(self.tableWidget.rowCount()))# self.tableWidget.setItem(i, j, item)# for的嵌套循環,依次在表的每個格中輸出數據def delete(self):conn = pymysql.connect(host='127.0.0.1',user='root',password='root',port=3309,db='wlw',cursorclass=pymysql.cursors.DictCursor)cur = conn.cursor()print("進入成功3")id = self.tableWidget_2.item(0, 0).text() # 只輸入需刪除行的id值即可sql = "delete from t1 where id=" + id # 刪除work1表中指定id的列cur.execute(sql)conn.commit()self.clear()# self.show() # 自動更新,清空后全顯def modify(self):conn = pymysql.connect(host='127.0.0.1',user='root',password='root',port=3309,db='wlw',cursorclass=pymysql.cursors.DictCursor)print("進入成功4")cur = conn.cursor()id = self.tableWidget_2.item(0, 0).text()name = self.tableWidget_2.item(0, 1).text()sql = "update t1 set name=" + name + " where id=" + id # 修改指定id的那一行的name列的值cur.execute(sql)conn.commit()self.clear()# self.show()def clear(self):self.tableWidget.clear() # 清空第一個表格的數據self.tableWidget_2.clear() # 清空第二個表格的數據class Ui_MainWindow2(object):def setupUi(self, MainWindow2):MainWindow2.setObjectName("登錄界面")MainWindow2.resize(708, 761)MainWindow2.setStyleSheet("")self.centralwidget = QtWidgets.QWidget(MainWindow2)self.centralwidget.setStyleSheet("background-image: url(./3.jpg);")self.centralwidget.setObjectName("centralwidget")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(540, 540, 131, 51))self.pushButton.setStyleSheet("font: 9pt \"造字工房悅黑體驗版細體\";\n" "image: url(:/ico/login.ico);\n" "background-color: CornflowerBlack;\n" "color: CornflowerBlack;")self.pushButton.setObjectName("pushButton")self.pushButton.setIcon(QIcon(QPixmap("login.ico")))self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_2.setGeometry(QtCore.QRect(540, 610, 131, 51))self.pushButton_2.setStyleSheet("font: 9pt \"造字工房悅黑體驗版細體\";\n" "image: url(:/ico/exit.ico);\n" "color: CornflowerBlack\n" "background-color: CornflowerBlack;")self.pushButton_2.setObjectName("pushButton_2")self.pushButton_2.setIcon(QIcon(QPixmap("exit.ico")))self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(450, 389, 51, 31))self.label.setStyleSheet("font: 9pt \"造字工房悅黑體驗版細體\";\n" "color: CornflowerBlack;")self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(460, 440, 41, 21))self.label_2.setStyleSheet("font: 9pt \"造字工房悅黑體驗版細體\";\n" "color: CornflowerBlack;")self.label_2.setObjectName("label_2")self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit.setGeometry(QtCore.QRect(510, 390, 181, 31))self.lineEdit.setStyleSheet("color: CornflowerBlack")self.lineEdit.setObjectName("lineEdit")self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_2.setGeometry(QtCore.QRect(510, 430, 181, 31))self.lineEdit_2.setStyleSheet("color: CornflowerBlack")self.lineEdit_2.setObjectName("lineEdit_2")self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))""""""self.radioButton = QtWidgets.QRadioButton(self.centralwidget)self.radioButton.setGeometry(QtCore.QRect(480, 480, 81, 19))self.radioButton.setStyleSheet("color: CornflowerBlack\n" "font: 9pt \"造字工房悅黑體驗版細體\";")self.radioButton.setObjectName("radioButton")self.radioButton.setChecked(True)MainWindow2.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow2)self.menubar.setGeometry(QtCore.QRect(0, 0, 708, 26))self.menubar.setObjectName("menubar")MainWindow2.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow2)self.statusbar.setObjectName("statusbar")MainWindow2.setStatusBar(self.statusbar)self.retranslateUi(MainWindow2)self.pushButton.clicked.connect(self.login)self.pushButton_2.clicked.connect(MainWindow2.close)self.radioButton.toggled.connect(self.select)QtCore.QMetaObject.connectSlotsByName(MainWindow2)QtCore.QMetaObject.connectSlotsByName(MainWindow2)def one_two_ui(self):name = self.lineEdit.text()passwd = self.lineEdit_2.text()if str(name) == '123456' and str(passwd) == '000000':MainWindow.show()else:QMessageBox.information(MainWindow2, "錯誤", "用戶名或者密碼不正確")print(name, passwd)def login(self):name = self.lineEdit.text()passwd = self.lineEdit_2.text()if str(name) == '123456' and str(passwd) == '000000':MainWindow.show()MainWindow2.hide()else:QMessageBox.information(MainWindow2, "錯誤", "用戶名或者密碼不正確")print(name, passwd)def select(self):if self.radioButton.isChecked():QMessageBox.information(MainWindow2,"提示","您選擇的是 管理員 登錄",QMessageBox.Ok)def retranslateUi(self, MainWindow2):_translate = QtCore.QCoreApplication.translateMainWindow2.setWindowTitle(_translate("MainWindow", "登錄界面"))self.pushButton.setText(_translate("MainWindow", "登錄"))self.pushButton_2.setText(_translate("MainWindow", "退出"))self.label.setText(_translate("MainWindow", "用戶名"))self.label_2.setText(_translate("MainWindow", "密碼"))self.radioButton.setText(_translate("MainWindow", "管理員"))if __name__ == '__main__':app2 = QtWidgets.QApplication(sys.argv)MainWindow2 = QtWidgets.QMainWindow()ui2 = Ui_MainWindow2()ui2.setupUi(MainWindow2)MainWindow2.show()MainWindow = QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)sys.exit(app2.exec_())

總結

以上是生活随笔為你收集整理的端口映射+物理机、虚拟机互访+Pyqt5、Gui图形化界面+Mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。