用pyqt5的qtreeview实现双击根节点和点击打开连接连接数据库
时间: 2024-04-30 11:22:55 浏览: 155
以下是一个用PyQt5实现的QTreeView,可以双击根节点打开连接来连接数据库的示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeView, QFileSystemModel, QMessageBox
from PyQt5.QtGui import QIcon
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.tree_view = QTreeView(self)
self.tree_view.setRootIsDecorated(False)
self.setCentralWidget(self.tree_view)
self.model = QFileSystemModel()
self.model.setRootPath("/")
self.tree_view.setModel(self.model)
self.tree_view.doubleClicked.connect(self.on_tree_view_double_clicked)
def on_tree_view_double_clicked(self, index):
if not self.model.isDir(index):
return
path = self.model.filePath(index)
if path == "/Connect":
self.connect_database()
def connect_database(self):
db_name, ok = QMessageBox.getText(
self, "输入数据库名称", "请输入数据库名称:")
if not ok:
return
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName(db_name + ".db")
if not db.open():
QMessageBox.critical(self, "无法打开数据库",
"无法连接到数据库 %s" % db_name)
return
query = QSqlQuery()
query.exec_("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
QMessageBox.information(self, "连接成功", "成功连接到数据库 %s" % db_name)
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setApplicationName("QTreeView Example")
app.setWindowIcon(QIcon("icon.png"))
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
```
在这个示例中,我们使用QFileSystemModel来实现QTreeView的数据模型。我们将根路径设置为"/",这样我们就可以添加一个名为"Connect"的虚拟文件夹,用于双击打开连接。
当用户双击树视图中的"Connect"文件夹时,我们会调用connect_database()方法。在这个方法中,我们使用QSqlDatabase来连接SQLite数据库。首先,我们会弹出一个对话框,让用户输入数据库名称。然后,我们会打开数据库并创建一个名为"users"的表。最后,我们会弹出一个消息框,告诉用户连接成功。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)