pyqt 學習基礎 實踐2 基於oschina筆記軟體的初步介面

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   io   ar   2014   問題   

筆記軟體主介面 這東西大概介紹

我想做一個基於oschina的跨平台的筆記軟體(做得好就分享給大家,做的不好就自己收藏….,oschina openapi方面已經熟悉了一下,但是Qt還不是很熟悉,因為還是學習中…),下面講我在用其他的筆記軟體常常遇到以下幾個問題:

  1. 不跨平台,因為很多像我這種偽程式猿都會在window和linux或者mac之間切換,像onenote就只能在windows上運行, 還有印象筆記的linux用戶端也不甚理想。不過近期發現的為知筆記的確是個不錯的選擇
  2. 作為一個筆記軟體,我覺得要具有一些比如像 案頭便簽日曆提醒等一些人性化的功能,暫時覺得只有為之筆記的windows用戶端能得到這個要求
  3. 其次,我們也有許多筆記可以跟大家一起分享,這些筆記軟體雖然具有分享功能,但是一般人都沒用到,因為他沒有一個公認的平台。如果是基於oschina的話,我們就可以通過公開的部落格來進行分享。另外oschina也可以設定私人部落格,這對於一些私人筆記也是可以很好的保護。
  4. 所以我覺得這個想法貌似還是可行
  5. 因為側重點在筆記,所以這個東西前期肯定會忽略一些oschina上的新聞、諮詢、動彈什麼的,後期的話,就要看具體情況慢慢加入

目標的準系統大致:

  • 跨平台
  • 具有寫部落格(公開),寫日記(私人),日常任務計劃(體現為便簽)
  • 具有自己的編輯器(總不能一個編輯器都沒有,然後去寫東西。其次,這樣介面風格好統一)(最好有預覽功能)
  • 具有類似鬧鐘這種提醒的功能。
  • 介面盡量美觀,能設定幾種不同的風格
擺在眼前的困難
  1. 寫部落格就需要一個編輯器(打算先實現markdown編輯),之前聽說用webview blabla做編輯器,不過我對這個不怎麼清楚,絲毫沒經驗,。也看到一些開源的基於Qt的markdown編輯器,暫時還沒精力去看,所以這是個痛點,也是現階段的重點。如果有哪位大神可以提供協助(我水平較低),那就更好了。
計劃
  1. 我想先用代碼把介面做出來,然後對代碼進行組織和最佳化
  2. 接著進行一些技術上的攻關(像編輯器這種東西)
  3. 然後把介面和後端聯絡起來
  4. 就快開學了。。。有些東西說不好。。。
代碼
# -*- 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筆記軟體的初步介面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.