Python ::: PyQt GUI Toolkit ::: QMainWindow

Como centralizar uma janela QMainWindow do PyQt

Quantidade de visualizações: 273 vezes
Nesta dica mostrarei como podemos centralizar a janela principal de nossa aplicação PyQt. Note que esta janela principal, na maioria das vezes, é representada por uma instância da classe QMainWindow.

Veja o código completo para o exemplo, já atualizado para o PyQt6:

# vamos importar os módulos necessários
import sys
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
 
# vamos criar uma classe que herda de QMainWindow
class JanelaPrincipal(QMainWindow):
  # construtor da classe
  def __init__(self):
    super().__init__()
 
    # definimos o título da janela 
    self.setWindowTitle("Cadastro de Produtos")
     
    # vamos definir as dimensões da janela
    self.resize(600, 420)

    # vamos obter a geometria do frame da nossa janela
    geometria_frame = self.frameGeometry()

    # acessamos a geometria da monitor e obtemos seu centro
    ponto_central = self.screen().availableGeometry().center()

    # movemos o retângulo obtido anteriormente para o centro da tela
    geometria_frame.moveCenter(ponto_central)
    
    # e finalmente movemos nossa janela para este ponto
    self.move(geometria_frame.topLeft())

if __name__== "__main__":
  # cria a aplicação
  app = QApplication(sys.argv)
 
  # cria a janela principal e a coloca visível
  janela_principal = JanelaPrincipal()
  janela_principal.show()
 
  # executa a aplicação
  app.exec()



Java ::: Tratamento de Erros ::: Erros de Tempo de Execução

Java para iniciantes - Como tratar o erro OutOfMemoryError no Java

Quantidade de visualizações: 12123 vezes
O erro OutOfMemoryError é apresentado quando a Java Virtual Machine (JVM) não consegue alocar um objeto por falta de memória e o Garbagge Collector não liberou mais memória ainda. Este é um erro que não deve ser apanhado em um bloco try...catch, ou seja, se não há memória para alocar novos objetos, é fácil entender que não haverá memória para tal procedimento. O melhor a fazer é deixar o programa terminar e verificar a causa do problema.

Veja a posição da classe OutOfMemoryError na hierarquia de classes da plataforma Java:

java.lang.Object
  java.lang.Throwable
    java.lang.Error
      java.lang.VirtualMachineError
        java.lang.OutOfMemoryError


Esta classe implementa a interface Serializable.

Uma das causas mais comuns para o erro OutOfMemoryError é a instanciação exagerada de objetos, principalmente em laços (loops). Uma forma de aumentar a memória RAM a ser usada é definindo opções na linha de comando para o java.exe. Algumas destas opções são -Xss64k -Xoss300k -Xms4m e -Xmx10m.


PHP ::: Dicas & Truques ::: Programação Orientada a Objetos

Programação orientada a objetos em PHP - Como usar herança em PHP

Quantidade de visualizações: 11807 vezes
Quando estamos projetando as classes que farão parte de um sistema, é aconselhável ter em mente um conceito muito importante da programação orientada a objetos: a herança.

O que um aluno, um professor e um funcionário possuem em comum? Todos eles são pessoas e, portanto, compartilham alguns dados comuns. Todos têm nome, idade, endereço, etc. E, o que diferencia um aluno de uma outra pessoa qualquer? Um aluno possui uma matrícula; Um funcionário possui um código de funcionário, data de admissão, salário, etc; Um professor possui um código de professor e informações relacionadas à sua formação.

É aqui que a herança se torna uma ferramenta de grande utilidade. Podemos criar uma classe Pessoa, que possui todos os atributos e métodos comuns a todas as pessoas e herdar estes atributos e métodos em classes mais específicas, ou seja, a herança parte do geral para o mais específico. Comece criando uma classe Pessoa como mostrado no código a seguir:

<?
  class Pessoa{
    public $nome;    
    public $idade;
  }
?>

Esta classe possui os atributos $nome e $idade. Estes atributos são comuns a todas as pessoas. Veja agora como podemos criar uma classe Aluno que herda estes atributos da classe Pessoa e inclui seu próprio atributo, a saber, seu número de matrícula. Eis o código:

<?
  class Pessoa{
    public $nome;    
    public $idade;
  }

  class Aluno extends Pessoa{
    public $matricula;
  }
?>

Observe que, em PHP, a palavra-chave usada para indicar herança é extends. A classe Aluno agora possui três atributos: $nome, $idade e $matricula. Veja um trecho de código mais completo, no qual este relacionamento é mais fácil de ser percebido:

<?
  class Pessoa{
    public $nome;    
    public $idade;
  }

  class Aluno extends Pessoa{
    public $matricula;
  }

  $aluno = new Aluno;
  $aluno->nome = "Osmar J. Silva";
  $aluno->idade = 36;
  $aluno->matricula = "AC33-65";

  // Exibe o resultado
  echo "Nome: " . $aluno->nome . "<br>" .
    "Idade: " . $aluno->idade . "<br>" .
    "Matrícula: " . $aluno->matricula;
?>

A herança nos fornece um grande benefício. Ao concentrarmos características comuns em uma classe e derivar as classes mais específicas a partir desta, nós estamos preparados para a adição de novas funcionalidades ao sistema. Se mais adiante uma nova propriedade comum tiver que ser adicionada, não precisaremos efetuar alterações em todas as classes. Basta alterar a superclasse e pronto. As classes derivadas serão automaticamente atualizadas.


Node.js ::: Express.js ::: Passos Iniciais

Node.js Express.js - Como escrever sua primeira aplicação Express.js

Quantidade de visualizações: 2183 vezes
Se você chegou até esta página vindo(a) de um sistema de busca tal como o Google, saiba que o Express.js é um framework web baseado no núcleo do Node.js, ou seja, antes de experimentar o exemplo abaixo, você deve ter uma instalação funcional do Node.js na sua máquina. Além disso, o módulo express deve estar instalado também, e 100% operacional.

No entanto, se sua instalação do Node.js ainda não tem o express, basta entrar no diretório que você instalou o Node.js e disparar o comando a seguir:

npm install express

Verifique se a instalação foi feita com sucesso e vamos continuar.

Este exemplo é bem simples e requer apenas um arquivo. Para tanto, abra o seu editor de código favorito e digite a listagem abaixo:

// vamos importar o módulo express
var express = require('express');
// o servidor vai ouvir na porta 8081
var porta = 8081;
var app = express();

// o asterisco (*) quer dizer que todas as requisições vão cair aqui
app.get('*', function(request, response){
  response.end('Tamo juntos!');
});

app.listen(porta, function(){
  console.log('O servidor está ouvindo em http://localhost:%s', porta);
});

Salve o arquivo como servidor.js e execute o Node.js. Em seguida abra o seu navegador web no endereço http://localhost:8081 e veja o resultado.

Agora não deixe de ver nossas outras dicas de Node.js e aprender cada vez mais.


Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como passar vetores e matrizes (arrays) para seus métodos Java

Quantidade de visualizações: 16324 vezes
Nesta dica mostrarei como você pode passar um array (vetor ou matriz) para seus métodos Java. Observe que um array é um objeto Java, e objetos são sempre passados por referência. Assim, as alterações feitas no vetor ou matriz dentro do método afetarão o array original.

Veja o código completo para o exemplo:

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    int[] valores = {43, 6, 17, 23, 8};
     
    // Exibe os valores antes de passar o
    // array para o método multiplicar
    for(int i = 0; i < valores.length; i++){
      System.out.print(valores[i] + ", ");
    }
   
    System.out.println();
 
    // fornece o array para o método multiplicar
    multiplicar(valores, 2); 
 
    // Exibe os valores depois de passar o
    // array para o método multiplicar
    for(int i = 0; i < valores.length; i++){
      System.out.print(valores[i] + ",  ");
    }
 
    System.exit(0);
  }
 
  public static void multiplicar(int a[], int num){
    for(int i = 0; i < a.length; i++){
      a[i] = a[i] * num;
    }
  } 
}

Ao executar este código nós teremos o seguinte resultado:

43, 6, 17, 23, 8,
86, 12, 34, 46, 16,


VB.NET ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço While em VB.NET

Quantidade de visualizações: 11395 vezes
Um instrução de repetição (também chamada de laço ou loop) permite que um bloco de códigos seja executado repetidamente até que uma condição seja satisfeita.

O laço While é usado quando queremos testar uma condição e, executar um bloco de código repetidamente enquanto esta condição for verdadeira. Lembre-se de que, se a condição já for falsa, o laço nunca será executado.

Veja um exemplo de laço While que nos permite exibir os números de 0 a 10:

Dim numero As Integer = 0

While numero <= 10
  Console.WriteLine(numero)
  numero += 1
End While

Veja uma nova versão deste código, desta vez contando de 10 a 0:

Dim numero As Integer = 10

While numero >= 0
  Console.WriteLine(numero)
  numero -= 1
End While

Aqui nós estamos novamente avaliando uma condição, ou seja, se o resultado da condição for True, a execução do laço continua. Se for False, o laço para. Veja um exemplo no qual a condição booleana está bem explícita:

Dim pode As Boolean = True
Dim valor As Integer = 1

While pode
  Console.WriteLine(valor)
  valor += 1

  If valor > 20 Then
    pode = False
  End If
End While



C++ ::: Fundamentos da Linguagem ::: Estruturas de Controle

C++ para iniciantes - Como criar um laço while infinito na linguagem C++

Quantidade de visualizações: 9547 vezes
É possível criar um laço while infinito em C++ simplesmente fornecendo o valor true para o teste da condição. Veja:

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // um laço while infinito
  int valor = 0;

  while(true){
    cout << valor << "\n";
    valor++;

    if(valor > 10)
      break;
  }

  cout << "\n\n";

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Veja que aqui nós usamos a instrução break para interromper a execução do laço. Tenha o cuidado de sempre monitorar os laços infinitos. Se não houver nenhum ponto de parada, seu programa executará indefinidamente até que sua máquina seja desligada ou o programa seja forçosamente terminado.


C ::: Dicas & Truques ::: Matemática e Estatística

Como calcular juros simples e montante usando C

Quantidade de visualizações: 8560 vezes
O regime de juros será simples quando o percentual de juros incidir apenas sobre o valor principal. Sobre os juros gerados a cada período não incidirão novos juros. Valor Principal ou simplesmente principal é o valor inicial emprestado ou aplicado, antes de somarmos os juros. Transformando em fórmula temos:

J = P . i . n

Onde:

J = juros
P = principal (capital)
i = taxa de juros
n = número de períodos

Imaginemos uma dívida de R$ 2.000,00 que deverá ser paga com juros de 5% a.m. pelo regime de juros simples e o prazo para o pagamento é de 2 meses. O cálculo em C pode ser feito assim:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  float principal = 2000.00;
  float taxa = 0.08;
  int meses = 2;

  float juros = principal * taxa * meses;

  printf("O total de juros a ser pago é: %f\n\n", juros);

  printf("\n\n");
  system("pause");
  return 0;
}

O montante da dívida pode ser obtido das seguintes formas:

a) Montante = Principal + Juros
b) Montante = Principal + (Principal x Taxa de juros x Número de períodos)

M = P . (1 + (i . n))

Veja o código:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  float principal = 2000.00;
  float taxa = 0.08;
  int meses = 2;

  float juros = principal * taxa * meses;
  float montante = principal * (1 + (taxa * meses));

  printf("O total de juros a ser pago é: %f\n", juros);
  printf("O montante a ser pago é: %f", montante);

  printf("\n\n");
  system("pause");
  return 0;
}



Revit C# ::: Dicas & Truques ::: Colunas e Pilares

Como rotacionar colunas e pilares no Revit via programação usando a função RotateElement() da classe ElementTransformUtils da Revit C# API

Quantidade de visualizações: 385 vezes
Nesta dica mostrarei como podemos usar a função RotateElement() da classe ElementTransformUtils da Revit C# API para rotacionar uma coluna ou pilar no Revit, tudo isso via programação.

Essa dica é muito útil para programadores Revit C#, pois traz as técnicas necessárias para selecionar um único elemento na área de desenho do Revit, assim como obter sua caixa delimitadora (BoundingBox), seu ponto geométrico central e, o mais importante, fazer a rotação do elemento em seus eixos.

O primeiro passo é pedir para o usuário selecionar o pilar ou a coluna usando a função PickObject() da classe Selection, que retorna uma Reference. Após a seleção do elemento nós usamos a função GetElement() da classe Document para retornar o elemento como uma variável FamilyInstance, ou seja, uma instância de família do Revit.

De posse da instância de família nós usamos a função get_BoundingBox() para obter e retornar um objeto da classe BoundingBoxXYZ. É esse objeto que usamos para obter o ponto máximo, o ponto mínimo e o ponto geométrico central da coluna ou pilar.

O passo final é usar a função RotateElement() da classe ElementTransformUtils para rotacionar a coluna ou pilar de acordo com o ângulo de rotação desejado. Note que fiz a conversão de ângulos em graus para ângulos em radianos antes de efetuar a rotação.

Veja o código Revit C# API completo para o exemplo:

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using Autodesk.Revit.DB.Architecture;
using System.Linq;
 
namespace Estudos {
  [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
    TransactionMode.Manual)]
  [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
  public partial class ThisApplication {
    private void Module_Startup(object sender, EventArgs e) {
      // vamos obter uma referência ao Document ativo
      Document doc = this.ActiveUIDocument.Document;
      UIDocument uidoc = this.ActiveUIDocument; 
      
      // agora mostramos uma mensagem para o usuário selecionar uma
      // coluna ou pilar
      TaskDialog.Show("Aviso", "Selecione uma coluna ou pilar");
        
      // obtemos uma referência ao objeto Selection do
      // UIDocument ativo
      Selection selecao = uidoc.Selection;
      
      // e finalmente esperamos que o usuário selecione o elemento
      Reference selecionado = selecao.PickObject(ObjectType.Element,
        "Selecione uma coluna ou pilar");
      
      // agora testamos se o usuário realmente selecionou um
      // elemento
      if (selecionado != null) {
        // vamos obter o elemento selecionado a partir da
        // referência
        FamilyInstance coluna = uidoc.Document.GetElement(selecionado) 
          as FamilyInstance;
        // vamos obter o elemento BoundingBoxXYZ
        BoundingBoxXYZ bounding = coluna.get_BoundingBox(null);
         
        // vamos obter as informações da BoundingBoxXYZ
        // primeiro o ponto mínimo (canto esquerdo inferior e
        // a parte de trás da caixa delimitadora)
        XYZ pontoMinimo = bounding.Min;
        // agora o ponto máximo (canto direito superior e
        // a parte da frente da caixa delimitadora)
        XYZ pontoMaximo = bounding.Max;
        
        // agora obtemos o ponto central da coluna         
        XYZ centro = (pontoMaximo + pontoMinimo) * 0.5;
        // construímos a linha que servirá de eixo de rotação
        Line eixos = Line.CreateBound(centro, centro + XYZ.BasisZ);
        // definimos o ângulo de rotação em graus        
        double angulo_rotacao_graus = 45;
        // convertemos para radianos
        double angulo_rotacao_radianos = angulo_rotacao_graus * (Math.PI / 180);        
        
        // iniciamos a transação
        Transaction transacao = new Transaction(doc);
        transacao.Start("Como rotacionar colunas e pilares no Revit");
        
        // rotacionamos a coluna ou pilar
        ElementTransformUtils.RotateElement(doc, coluna.Id, eixos,
          angulo_rotacao_radianos);
        
        // fazemos o commit da transação
        transacao.Commit();      
     
        // e mostramos o resultado
        TaskDialog.Show("Aviso", "A coluna foi rotacionada com sucesso.");
      }
    }
      
    private void Module_Shutdown(object sender, EventArgs e) {
      // para fazer alguma limpeza de memória ou algo assim
    }
 
    #region Revit Macros generated code
    private void InternalStartup() {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
  }
}



JavaScript ::: Dicas & Truques ::: Validação de Formulários

Validação de formulários em JavaScript - Como validar um formulário contendo usuário e senha em JavaScript

Quantidade de visualizações: 34300 vezes
A validação de formulários em JavaScript é uma das primeiras técnicas que devemos aprender, pois ela avita a perda de tempo que ocorre com a validação somente do lado do servidor (não se esqueça: as duas são necessárias).

Ao validar no navegador, o usuário já vai as devidas correções sem ter que esperar o processamento de seus dados para, só então, ser comunicado de que alguma informação está incorreta.

Assim, nesta dica, mostrarei como podemos validar um nome de usuário e senha em JavaScript. Deixei o exemplo bem mais, mas você pode melhorá-lo, adicionando até expressões regulares para ampliar as situações que podem ocorrer.

O código abaixo vai gerar o seguinte formulário HTML:



E agora o código completo para o exemplo:

<html>
<head>
<title>Estudando JavaScript</title>

<style type="text/css">
  input {margin-bottom: 3px; margin-top: 3px}
</style>

<script language="JavaScript">
  function validar(){
    // só permitirá o envio se os dados forem fornecidos
    if(document.login.nome.value == ""){
      alert("Forneça o nome do usuário");
      document.login.nome.focus();
      return false;
    }
    else if(document.login.senha.value == ""){
      alert("Forneça a senha do usuário");
      document.login.senha.focus();
      return false;
    }
    else{
      return true;
    }
  }
</script>

</head>
<body>

<form name="login" action="gravar.php" method="post" 
     onsubmit="return validar()">
  Usuário:<br>
  <input type="text" id="nome" name="nome"><br>
  Senha:<br>
  <input type="password" id="senha" name="senha"><br>
  <input type="submit" value="Entrar!">
</form>
 
</body>
</html>


Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 18 usuários muito felizes estudando em nosso site.