標籤:style blog http color os io ar 2014 問題
筆記軟體主介面 這東西大概介紹
我想做一個基於oschina的跨平台的筆記軟體(做得好就分享給大家,做的不好就自己收藏….,oschina openapi方面已經熟悉了一下,但是Qt還不是很熟悉,因為還是學習中…),下面講我在用其他的筆記軟體常常遇到以下幾個問題:
- 不跨平台,因為很多像我這種偽程式猿都會在window和linux或者mac之間切換,像onenote就只能在windows上運行, 還有印象筆記的linux用戶端也不甚理想。不過近期發現的
為知筆記
的確是個不錯的選擇
- 作為一個筆記軟體,我覺得要具有一些比如像
案頭便簽
,日曆提醒
等一些人性化的功能,暫時覺得只有為之筆記
的windows用戶端能得到這個要求
- 其次,我們也有許多筆記可以跟大家一起分享,這些筆記軟體雖然具有分享功能,但是一般人都沒用到,因為他沒有一個公認的平台。如果是基於oschina的話,我們就可以通過公開的部落格來進行分享。另外oschina也可以設定私人部落格,這對於一些私人筆記也是可以很好的保護。
- 所以我覺得這個想法貌似還是可行
- 因為側重點在筆記,所以這個東西前期肯定會忽略一些oschina上的新聞、諮詢、動彈什麼的,後期的話,就要看具體情況慢慢加入
目標的準系統大致:
- 跨平台
- 具有寫部落格(公開),寫日記(私人),日常任務計劃(體現為便簽)
- 具有自己的編輯器(總不能一個編輯器都沒有,然後去寫東西。其次,這樣介面風格好統一)(最好有預覽功能)
- 具有類似鬧鐘這種提醒的功能。
- 介面盡量美觀,能設定幾種不同的風格
擺在眼前的困難
- 寫部落格就需要一個編輯器(打算先實現markdown編輯),之前聽說用webview blabla做編輯器,不過我對這個不怎麼清楚,絲毫沒經驗,。也看到一些開源的基於Qt的markdown編輯器,暫時還沒精力去看,所以這是個痛點,也是現階段的重點。如果有哪位大神可以提供協助(我水平較低),那就更好了。
計劃
- 我想先用代碼把介面做出來,然後對代碼進行組織和最佳化
- 接著進行一些技術上的攻關(像編輯器這種東西)
- 然後把介面和後端聯絡起來
- 就快開學了。。。有些東西說不好。。。
代碼
# -*- coding:utf8 -*-from PyQt4 import QtCore, QtGuifrom PyQt4.QtCore import *from PyQt4.QtGui import *import mainQssclass mainUi(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) #self.shadow = QGraphicsDropShadowEffect(self) #self.shadow.setBlurRadius(15) #self.shadow.setColor(QColor("blue")) #self.shadow.setOffset(20, 20) #self.setGraphicsEffect(self.shadow) self.setWindowFlags(Qt.FramelessWindowHint) self.layout = QHBoxLayout(self) self.leftwidget = QWidget() self.centerwidget = QWidget() self.rightwidget = QWidget() self.leftwidget.setMaximumWidth(300) self.leftwidget.setMinimumWidth(200) self.leftwidget.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) # growflag self.centerwidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # growflag self.rightwidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) # growflag self.centerwidget.setMinimumWidth(550) self.rightwidget.setMinimumWidth(250) self.rightwidget.setMaximumWidth(300) self.leftwidget.setStyleSheet(mainQss.threeWidget) self.centerwidget.setStyleSheet(mainQss.threeWidget) self.rightwidget.setStyleSheet(mainQss.threeWidget) headLabel = QLabel(self.rightwidget) headLabel.setStyleSheet(mainQss.headLabel) headLabel.setGeometry(25, 50, 80, 80) blogButton = QPushButton(u‘我的部落格‘,self.rightwidget) blogButton.setStyleSheet(mainQss.textButton) blogButton.setGeometry(25, 180, 150, 30) blogWriteButton = QPushButton(self.rightwidget) blogWriteButton.setStyleSheet(mainQss.writeButton) blogWriteButton.setGeometry(180, 182, 24, 24) noteButton = QPushButton(u‘日常筆記‘,self.rightwidget) noteButton.setStyleSheet(mainQss.textButton) noteButton.setGeometry(25, 220, 150, 30) noteWriteButton = QPushButton(self.rightwidget) noteWriteButton.setStyleSheet(mainQss.writeButton) noteWriteButton.setGeometry(180, 222, 24, 24) taskButton = QPushButton(u‘今日任務‘,self.rightwidget) taskButton.setStyleSheet(mainQss.textButton) taskButton.setGeometry(25, 260, 150, 30) taskWriteButton = QPushButton(self.rightwidget) taskWriteButton.setStyleSheet(mainQss.writeButton) taskWriteButton.setGeometry(180, 262, 24, 24) self.btnClose = QPushButton(self.leftwidget) self.btnMini = QPushButton(self.leftwidget) self.btnMax = QPushButton(self.leftwidget) self.btnClose.setGeometry(5, 5, 24, 24) self.btnMini.setGeometry(64, 5, 24, 24) self.btnMax.setGeometry(35, 5, 24, 24) self.btnClose.setStyleSheet(mainQss.btn_close) self.btnMini.setStyleSheet(mainQss.btn_mini) self.btnMax.setStyleSheet(mainQss.btn_max) self.leftLayout = QVBoxLayout() self.centerLayout = QVBoxLayout() self.rightLayout = QVBoxLayout() self.leftLayout.addWidget(self.leftwidget) self.centerLayout.addWidget(self.centerwidget) self.rightLayout.addWidget(self.rightwidget) self.layout.addLayout(self.leftLayout) self.layout.addLayout(self.centerLayout) self.layout.addLayout(self.rightLayout) self.maxToNor = False self.layout.setContentsMargins(0,0,0,0) self.layout.setSpacing(0) self.setLayout(self.layout) self.setWindowOpacity(0.95) self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Ignored) self.resize(1000, 600) self.connect(self.btnClose, SIGNAL("clicked()"), QtGui.qApp, SLOT("quit()")) self.connect(self.btnMini, SIGNAL("clicked()"),self.showMinimized) self.connect(self.btnMax, SIGNAL("clicked()"),self.showMaxNor) def showMaxNor(self): if self.maxToNor: self.showNormal() self.maxToNor = False else: self.showMaximized() self.maxToNor = True def mousePressEvent(self, event): if self.isMaximized(): return if event.button() == Qt.LeftButton: self.dragPos = event.globalPos() - self.pos() event.accept() def mouseMoveEvent(self, QMouseEvent): if self.isMaximized(): return if QMouseEvent.buttons() and Qt.LeftButton: self.move(QMouseEvent.globalPos() - self.dragPos) QMouseEvent.accept() def mouseReleaseEvent(self, QMouseEvent): passif __name__ == "__main__": import sys app = QApplication(sys.argv) mu = mainUi()
代碼2
# -*- coding:utf8 -*-btn_close = ‘‘‘ QPushButton{ background-image: url(./img/close.png); border-radius: 1px; } QPushButton:hover{ background-image: url(./img/closeHover.png); }‘‘‘btn_mini = ‘‘‘ QPushButton{ background-image: url(./img/mini.png); border-radius: 1px; } QPushButton:Hover{ background-image: url(./img/miniHover.png) }‘‘‘btn_max = ‘‘‘ QPushButton{ background-image: url(./img/max.png); border-radius: 1px; } QPushButton:Hover{ background-image: url(./img/maxHover.png) }‘‘‘headLabel = ‘‘‘ QLabel{ background-color: #FFCCCC; border-radius: 4px; }‘‘‘textButton = ‘‘‘ QPushButton{ text-align: left; color: white; font: 20px "Times New Roman"; border-radius: 4px; } QPushButton:Hover{ color: #D6432D; }‘‘‘writeButton = ‘‘‘ QPushButton{ background-image: url(./img/blogWrite.png); border-radius: 4px; } QPushButton:Hover{ background-image: url(./img/blogWriteHover.png); }‘‘‘threeWidget = ‘‘‘ QWidget{ background-color: #222222; border-radius: 0px; }‘‘‘
pyqt 學習基礎 實踐2 基於oschina筆記軟體的初步介面